On Apr 28, 2013, at 4:32 PM, Michael van Elst <mlel...@serpens.de> wrote:

> On Sun, Apr 28, 2013 at 01:50:37PM +0200, J. Hannken-Illjes wrote:
> 
>>> The locking order hasn't been changed, but the faulty tryenter has been
>>> replaced with an enter.
>> 
>> Sure -- and that is the problem.  The locking order was wrong and you
>> removed the hack/workaround without fixing the lock order.
> 
> I now release the mnt_unmounting lock before aquiring the mountlist_lock.
> This opens a race condition for a concurrent umount that I prevent by
> raising the nest counter. With this change I can no longer provoke
> the deadlock.
> 
> The only difference should now be that vfs_hooks_unmount() is called
> outside the unmounting lock. But since it is operating on an already
> detached mountpoint (if it is used at all) before it is destroyed,
> that should be harmless.
> 
> What do you think?
<snip>

Unfortunately this also opens a race for do_sys_sync to succeed with
vfs_busy() and call ffs_sync() with mp->mnt_data == NULL -> BOMB.

--
J. Hannken-Illjes - hann...@eis.cs.tu-bs.de - TU Braunschweig (Germany)

Reply via email to