ufs: fix deadlocks introduced by sb mutex merge
authorAlexey Khoroshilov <khoroshilov@ispras.ru>
Tue, 2 Sep 2014 07:40:17 +0000 (11:40 +0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 7 Sep 2014 17:26:39 +0000 (13:26 -0400)
commit9ef7db7f38d0472dd9c444e42d5c5175ccbe5451
tree38098751b8e07a868788fda862f96763b55d0763
parent81b6b06197606b4bef4e427a197aeb808e8d89e1
ufs: fix deadlocks introduced by sb mutex merge

Commit 0244756edc4b ("ufs: sb mutex merge + mutex_destroy") introduces
deadlocks in ufs_new_inode() and ufs_free_inode().
Most callers of that functions acqure the mutex by themselves and
ufs_{new,free}_inode() do that via lock_ufs(),
i.e we have an unavoidable double lock.

The patch proposes to resolve the issue by making sure that
ufs_{new,free}_inode() are not called with the mutex held.

Found by Linux Driver Verification project (linuxtesting.org).

Cc: stable@vger.kernel.org # 3.16
Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/ufs/inode.c
fs/ufs/namei.c