On Sun, Nov 01, 2020 at 02:48:09PM +0000, Christoph Hellwig wrote: > > /** > > * capable_wrt_inode_uidgid - Check nsown_capable and uid and gid mapped > > * @inode: The inode in question > > @@ -501,9 +513,7 @@ bool privileged_wrt_inode_uidgid(struct user_namespace *ns, const struct inode * > > */ > > bool capable_wrt_inode_uidgid(const struct inode *inode, int cap) > > { > > + return capable_wrt_mapped_inode_uidgid(&init_user_ns, inode, cap); > > } > > EXPORT_SYMBOL(capable_wrt_inode_uidgid); > > Please avoid these silly wrappers and just switch all callers to pass > the namespaces instead of creating boilerplate code. Same for the other > functions where you do this even even worse the method calls. Christoph, Thanks for the review! Ok, so I'll switch: - all helpers to take an additional argument (capable_wrt_inode_uidgid()/inode_permission()/vfs_*() etc.) - all inode method calls to take an additional argument (I assume that's what you're referring to: ->create()/->mknod()/->mkdir() etc.) I've always assumed that this is what we'd be doing in the end anyway (I've mentioned it in the commit message for the inode_operations method's. This will be a bit of work but we can get that done!)