summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Viro <viro@math.psu.edu>2002-03-10 22:22:18 -0800
committerLinus Torvalds <torvalds@penguin.transmeta.com>2002-03-10 22:22:18 -0800
commitace5d474a6ad06d97017ff07e4a50a720b4b8f22 (patch)
tree0c559b3efa76f0d45903a55dc71a34c73cf9fd57
parent2f96736ac6da030b46a7abfee374f363dad1cadf (diff)
[PATCH] fix for get_sb_bdev() bug
Grr... When loop in get_sb_bdev() had been switched from global list of superblock to per-type one, we should have switched from sb_entry(p) (aka. list_entry(p, struct super_block, s_list)) to list_entry(p, struct super_block, s_instances). As it is, we end up with false negatives all the time. I.e. second mount from the same block device with the same type gices a new superblock. With obvious nasty results... This fixes that.
-rw-r--r--fs/super.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/super.c b/fs/super.c
index 149e89ec125c..e83164f10634 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -728,7 +728,8 @@ restart:
spin_lock(&sb_lock);
list_for_each(p, &fs_type->fs_supers) {
- struct super_block *old = sb_entry(p);
+ struct super_block *old;
+ old = list_entry(p, struct super_block, s_instances);
if (old->s_bdev != bdev)
continue;
if (!grab_super(old))