super: move lockdep assert
authorChristian Brauner <brauner@kernel.org>
Mon, 28 Aug 2023 11:26:23 +0000 (13:26 +0200)
committerChristian Brauner <brauner@kernel.org>
Tue, 29 Aug 2023 08:13:04 +0000 (10:13 +0200)
Fix braino and move the lockdep assertion after put_super() otherwise we
risk a use-after-free.

Fixes: 2c18a63b760a ("super: wait until we passed kill super")
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Message-Id: <20230828-vfs-super-fixes-v1-1-b37a4a04a88f@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/super.c

index ef87103..779247e 100644 (file)
@@ -570,8 +570,8 @@ static bool grab_super_dead(struct super_block *sb)
                return true;
        }
        wait_var_event(&sb->s_flags, wait_dead(sb));
-       put_super(sb);
        lockdep_assert_not_held(&sb->s_umount);
+       put_super(sb);
        return false;
 }