On Thu, 2025-04-03 at 17:15 +0200, Christian Brauner wrote: > On Thu, Apr 03, 2025 at 10:29:37AM +0200, Christian Brauner wrote: > > On Tue, Apr 01, 2025 at 08:07:15PM +0300, Leon Romanovsky wrote: > > > On Mon, Mar 24, 2025 at 09:00:59PM +0000, > > > pr-tracker-bot@xxxxxxxxxx wrote: > > > > The pull request you sent on Sat, 22 Mar 2025 11:13:18 +0100: > > > > > > > > > git@xxxxxxxxxxxxxxxxxxx:pub/scm/linux/kernel/git/vfs/vfs > > > > > tags/vfs-6.15-rc1.mount > > > > > > > > has been merged into torvalds/linux.git: > > > > https://git.kernel.org/torvalds/c/fd101da676362aaa051b4f5d8a941bd308603041 > > > > > > I didn't bisect, but this PR looks like the most relevant > > > candidate. > > > The latest Linus's master generates the following slab-use-after- > > > free: > > > > Sorry, did just see this today. I'll take a look now. > > So in light of "Liberation Day" and the bug that caused this splat > it's > time to quote Max Liebermann: > > "Ich kann nicht so viel fressen, wie ich kotzen möchte." > --- a/fs/namespace.c > +++ b/fs/namespace.c > @@ -2478,7 +2478,8 @@ struct vfsmount *clone_private_mount(const > struct path *path) > struct mount *old_mnt = real_mount(path->mnt); > struct mount *new_mnt; > > - scoped_guard(rwsem_read, &namespace_sem) > + guard(rwsem_read, &namespace_sem); > + > if (IS_MNT_UNBINDABLE(old_mnt)) > return ERR_PTR(-EINVAL); > Well that's a barfworthy oopsie, yes. However, it does strike me as an easy one to make for a lot of these cleanup.h things since we have a lot of scoped and unscoped variants. We should, at least, get checkpatch to issue a warning about indentation expectations as it does for our other scoped statements like for, while, if etc. It looks quite simple if got my perl right (it's a bit rusty). Regards, James --- diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 7b28ad331742..805b65098149 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -4347,7 +4347,7 @@ sub process { } # Check relative indent for conditionals and blocks. - if ($line =~ /\b(?:(?:if|while|for|(?:[a-z_]+|)for_each[a-z_]+)\s*\(|(?:do|else)\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) { + if ($line =~ /\b(?:(?:if|while|scoped_[a-z_]+|for|(?:[a-z_]+|)for_each[a-z_]+)\s*\(|(?:do|else)\b)/ && $line !~ /^.\s*#/ && $line !~ /\}\s*while\s*/) { ($stat, $cond, $line_nr_next, $remain_next, $off_next) = ctx_statement_block($linenr, $realcnt, 0) if (!defined $stat);