summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authornpiggin@suse.de <npiggin@suse.de>2010-06-24 13:02:14 +1000
committerLinus Torvalds <torvalds@linux-foundation.org>2010-06-29 10:38:22 -0700
commit57439f878afafefad8836ebf5c49da2a0a746105 (patch)
treeec11dd35704aa37d77a5fd8404fda57f297a3834 /drivers
parent5904b3b81d25166e5e39b9727645bb47937618e3 (diff)
downloadlinux-57439f878afafefad8836ebf5c49da2a0a746105.tar.bz2
fs: fix superblock iteration race
list_for_each_entry_safe is not suitable to protect against concurrent modification of the list. 6754af6 introduced a race in sb walking. list_for_each_entry can use the trick of pinning the current entry in the list before we drop and retake the lock because it subsequently follows cur->next. However list_for_each_entry_safe saves n=cur->next for following before entering the loop body, so when the lock is dropped, n may be deleted. Signed-off-by: Nick Piggin <npiggin@suse.de> Cc: Christoph Hellwig <hch@infradead.org> Cc: John Stultz <johnstul@us.ibm.com> Cc: Frank Mayhar <fmayhar@google.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions