diff options
| author | Alexander Viro <viro@math.psu.edu> | 2002-03-10 22:22:18 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-03-10 22:22:18 -0800 |
| commit | ace5d474a6ad06d97017ff07e4a50a720b4b8f22 (patch) | |
| tree | 0c559b3efa76f0d45903a55dc71a34c73cf9fd57 | |
| parent | 2f96736ac6da030b46a7abfee374f363dad1cadf (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.c | 3 |
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)) |
