https://github.com/torvalds/linux
Revision b2f49033d80c952a0ffc2d5647bc1a0b8a09c1b3 authored by Peter Staubach on 17 February 2006, 21:52:36 UTC, committed by Linus Torvalds on 17 February 2006, 21:59:26 UTC
Fix a deadlock possible in the ext2 file system implementation.  This
deadlock occurs when a file is removed from an ext2 file system which was
mounted with the "sync" mount option.

The problem is that ext2_xattr_delete_inode() was invoking the routine,
sync_dirty_buffer(), using a buffer head which was previously locked via
lock_buffer().  The first thing that sync_dirty_buffer() does is to lock
the buffer head that it was passed.  It does this via lock_buffer().  Oops.

The solution is to unlock the buffer head in ext2_xattr_delete_inode()
before invoking sync_dirty_buffer().  This makes the code in
ext2_xattr_delete_inode() obey the same locking rules as all other callers
of sync_dirty_buffer() in the ext2 file system implementation.

Signed-off-by: Peter Staubach <staubach@redhat.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
1 parent 614f8f5
History
Tip revision: b2f49033d80c952a0ffc2d5647bc1a0b8a09c1b3 authored by Peter Staubach on 17 February 2006, 21:52:36 UTC
[PATCH] fix deadlock in ext2
Tip revision: b2f4903
File Mode Size
bttv
API.html -rw-r--r-- 366 bytes
CARDLIST.bttv -rw-r--r-- 7.8 KB
CARDLIST.cx88 -rw-r--r-- 3.0 KB
CARDLIST.em28xx -rw-r--r-- 691 bytes
CARDLIST.saa7134 -rw-r--r-- 4.6 KB
CARDLIST.tuner -rw-r--r-- 2.5 KB
CQcam.txt -rw-r--r-- 14.1 KB
README.cpia -rw-r--r-- 7.1 KB
README.cx88 -rw-r--r-- 2.2 KB
README.ir -rw-r--r-- 2.3 KB
README.saa7134 -rw-r--r-- 1.9 KB
Zoran -rw-r--r-- 21.9 KB
hauppauge-wintv-cx88-ir.txt -rw-r--r-- 1.9 KB
lifeview.txt -rw-r--r-- 1.5 KB
meye.txt -rw-r--r-- 4.5 KB
not-in-cx2388x-datasheet.txt -rw-r--r-- 953 bytes
radiotrack.txt -rw-r--r-- 5.8 KB
w9966.txt -rw-r--r-- 1.2 KB
zr36120.txt -rw-r--r-- 7.1 KB

README.cpia

back to top