super: remove pointless s_root checks
authorChristian Brauner <brauner@kernel.org>
Sat, 29 Mar 2025 08:42:14 +0000 (09:42 +0100)
committerChristian Brauner <brauner@kernel.org>
Mon, 7 Apr 2025 07:37:16 +0000 (09:37 +0200)
The locking guarantees that the superblock is alive and sb->s_root is
still set. Remove the pointless check.

Link: https://lore.kernel.org/r/20250329-work-freeze-v2-1-a47af37ecc3d@kernel.org
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/super.c

index 97a17f9d9023dc79e69ad852e610928aad479a0c..dc14f4bf73a6357c16c53d98342ba6a548e7507e 100644 (file)
@@ -930,8 +930,7 @@ void iterate_supers(void (*f)(struct super_block *, void *), void *arg)
 
                locked = super_lock_shared(sb);
                if (locked) {
-                       if (sb->s_root)
-                               f(sb, arg);
+                       f(sb, arg);
                        super_unlock_shared(sb);
                }
 
@@ -967,11 +966,8 @@ void iterate_supers_type(struct file_system_type *type,
                spin_unlock(&sb_lock);
 
                locked = super_lock_shared(sb);
-               if (locked) {
-                       if (sb->s_root)
-                               f(sb, arg);
-                       super_unlock_shared(sb);
-               }
+               if (locked)
+                       f(sb, arg);
 
                spin_lock(&sb_lock);
                if (p)
@@ -991,18 +987,15 @@ 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) {
+               if (sb->s_dev == dev) {
                        bool locked;
 
                        sb->s_count++;
                        spin_unlock(&sb_lock);
                        /* still alive? */
                        locked = super_lock(sb, excl);
-                       if (locked) {
-                               if (sb->s_root)
-                                       return sb;
-                               super_unlock(sb, excl);
-                       }
+                       if (locked)
+                               return sb; /* caller will drop */
                        /* nope, got unmounted */
                        spin_lock(&sb_lock);
                        __put_super(sb);