]> git.baikalelectronics.ru Git - kernel.git/commit
xfs: fix double unlock in xfs_swap_extents()
authorFelix Blyakher <felixb@sgi.com>
Fri, 8 May 2009 00:49:45 +0000 (19:49 -0500)
committerFelix Blyakher <felixb@sgi.com>
Tue, 2 Jun 2009 03:59:29 +0000 (22:59 -0500)
commita3e224cac749cb426f0f5ecf0e70ccb8ffaf465a
tree0fa80478499f1c42b2dc649659e1d1f22c6862f2
parentbddc00d4d7ffb67f231a3029adb96be612a153c0
xfs: fix double unlock in xfs_swap_extents()

Regreesion from commit 9fbadf2, which rearranged the code in
xfs_swap_extents() leading to double unlock of xfs inode ilock.
That resulted in xfs_fsr deadlocking itself on platforms, which
don't handle double unlock of rw_semaphore nicely. It caused the
count go negative, which represents the write holder, without
really having one. ia64 is one of the platforms where deadlock
was easily reproduced and the fix was tested.

Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
Signed-off-by: Felix Blyakher <felixb@sgi.com>
fs/xfs/xfs_dfrag.c