aufs: bugfix mmap_sem 1/4, release [fdi]i_rwsem in file I/O
commit3317039c0dffe590f6e8256a9d3bfc11758a9091
authorJ. R. Okajima <hooanon05@yahoo.co.jp>
Wed, 9 Nov 2011 12:21:18 +0000 (9 21:21 +0900)
committerJan Alexander Steffens (heftig) <jan.steffens@gmail.com>
Tue, 20 Mar 2012 10:05:52 +0000 (20 11:05 +0100)
tree128d7a2996b432a7666ac07af448c883bb6a2e9b
parent52f42edac0f146590f5f5be246e19850e525fddd
aufs: bugfix mmap_sem 1/4, release [fdi]i_rwsem in file I/O

mmap(2) acquires mm->mmap_sem before ->mmap(), and aufs mmap() acquires
aufs rwsem. On the other hand, aufs file I/O functions including
->read(), ->write() acquire aufs rwsem and then mmap_sem.
This AB-BA problem will cause deadlock.
By this commit, aufs file I/O functions release aufs rwsem before
mmap_sem except si_rwsem. Holding si_rwsem is necessary to protect the
operation from aufs branch management.

Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>
(cherry picked from commit 0a118fbd1867734fbe1cf1a54907b0150fe9e1b4)
fs/aufs/f_op.c