Messages in this thread | | | Date | Tue, 10 Nov 2015 04:46:18 +0000 | From | Al Viro <> | Subject | Re: [PATCH 1/4] nbd: Remove signal usage |
| |
On Thu, Oct 29, 2015 at 04:42:37PM +0100, Markus Pargmann wrote: > del_timer_sync(&nbd->timeout_timer); > + > +out: > + spin_unlock_irq(&nbd->sock_lock);
... and in its callback we have this:
> @@ -148,17 +155,15 @@ static void nbd_xmit_timeout(unsigned long arg) > > nbd->disconnect = true; > > - spin_lock_irqsave(&nbd->tasks_lock, flags); > + spin_lock_irqsave(&nbd->sock_lock, flags);
* CPU 1 enters sock_shutdown() and grabs ->sock_lock. * on CPU2 the timer hits and we enter the callback, where we spin on that spinlock. * in the meanwhile, CPU1 calls del_timer_sync()
Deadlock...
| |