vfs: fix possible deadlock in ext2, ext3, ext4 when using xattrs
authorJan Kara <jack@suse.cz>
Tue, 15 Apr 2008 21:34:43 +0000 (14:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 16 Apr 2008 02:35:41 +0000 (19:35 -0700)
commit335e92e8a515420bd47a6b0f01cb9a206c0ed6e4
tree1518f9afa7ac7047be2c86481b3dbc12f8cc9282
parent423bec43079a2942a3004034df7aad76469758d8
vfs: fix possible deadlock in ext2, ext3, ext4 when using xattrs

mb_cache_entry_alloc() was allocating cache entries with GFP_KERNEL.  But
filesystems are calling this function while holding xattr_sem so possible
recursion into the fs violates locking ordering of xattr_sem and transaction
start / i_mutex for ext2-4.  Change mb_cache_entry_alloc() so that filesystems
can specify desired gfp mask and use GFP_NOFS from all of them.

Signed-off-by: Jan Kara <jack@suse.cz>
Reported-by: Dave Jones <davej@redhat.com>
Cc: <linux-ext4@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ext2/xattr.c
fs/ext3/xattr.c
fs/ext4/xattr.c
fs/mbcache.c
include/linux/mbcache.h