[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv2 net] xen-netfront: use different locks for Rx and Tx stats
From: David Vrabel <david.vrabel@xxxxxxxxxx> Date: Tue, 13 Jan 2015 16:42:42 +0000 > In netfront the Rx and Tx path are independent and use different > locks. The Tx lock is held with hard irqs disabled, but Rx lock is > held with only BH disabled. Since both sides use the same stats lock, > a deadlock may occur. > > [ INFO: possible irq lock inversion dependency detected ] > 3.16.2 #16 Not tainted > --------------------------------------------------------- > swapper/0/0 just changed the state of lock: > (&(&queue->tx_lock)->rlock){-.....}, at: [<c03adec8>] > xennet_tx_interrupt+0x14/0x34 > but this lock took another, HARDIRQ-unsafe lock in the past: > (&stat->syncp.seq#2){+.-...} > and interrupts could create inverse lock ordering between them. > other info that might help us debug this: > Possible interrupt unsafe locking scenario: > > CPU0 CPU1 > ---- ---- > lock(&stat->syncp.seq#2); > local_irq_disable(); > lock(&(&queue->tx_lock)->rlock); > lock(&stat->syncp.seq#2); > <Interrupt> > lock(&(&queue->tx_lock)->rlock); > > Using separate locks for the Rx and Tx stats fixes this deadlock. > > Reported-by: Dmitry Piotrovsky <piotrovskydmitry@xxxxxxxxx> > Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx> Applied, thanks. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |