diff options
| author | Christian Brauner <brauner@kernel.org> | 2025-03-29 09:42:15 +0100 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2025-04-07 09:37:16 +0200 |
| commit | 484caf5e117a9334a08b1d69542e1065be4b30ab (patch) | |
| tree | 75aef86cccee87e6142efa9e5bce3fd9877c99f4 /fs/super.c | |
| parent | af7551cf13cf7fb1d4f939db4f1f24c00550ed57 (diff) | |
super: simplify user_get_super()
Make it easier to read and remove one level of identation.
Link: https://lore.kernel.org/r/20250329-work-freeze-v2-2-a47af37ecc3d@kernel.org
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'fs/super.c')
| -rw-r--r-- | fs/super.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/fs/super.c b/fs/super.c index dc14f4bf73a6..b1acfc38ba0c 100644 --- a/fs/super.c +++ b/fs/super.c @@ -987,20 +987,21 @@ struct super_block *user_get_super(dev_t dev, bool excl) spin_lock(&sb_lock); list_for_each_entry(sb, &super_blocks, s_list) { - if (sb->s_dev == dev) { - bool locked; - - sb->s_count++; - spin_unlock(&sb_lock); - /* still alive? */ - locked = super_lock(sb, excl); - if (locked) - return sb; /* caller will drop */ - /* nope, got unmounted */ - spin_lock(&sb_lock); - __put_super(sb); - break; - } + bool locked; + + if (sb->s_dev != dev) + continue; + + sb->s_count++; + spin_unlock(&sb_lock); + + locked = super_lock(sb, excl); + if (locked) + return sb; + + spin_lock(&sb_lock); + __put_super(sb); + break; } spin_unlock(&sb_lock); return NULL; |
