On Tue, Apr 2, 2024 at 3:39 PM Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > ... > But if we really want to do this ("if mknod creates a positive dentry, > I won't see it in lookup, so I want to appraise it now"), then we > should just deal with this in the generic layer with some hack like > this: > > --- a/security/security.c > +++ b/security/security.c > @@ -1801,7 +1801,8 @@ EXPORT_SYMBOL(security_path_mknod); > */ > void security_path_post_mknod(struct mnt_idmap *idmap, struct dentry *dentry) > { > - if (unlikely(IS_PRIVATE(d_backing_inode(dentry)))) > + struct inode *inode = d_backing_inode(dentry); > + if (unlikely(!inode || IS_PRIVATE(inode))) > return; > call_void_hook(path_post_mknod, idmap, dentry); > } Other than your snippet wrapping both the inode/NULL and inode/IS_PRIVATE checks with an unlikely(), that's what Roberto submitted (his patch only wrapped the inode/IS_PRIVATE with unlikely). -- paul-moore.com