On Wed, Aug 17, 2022 at 6:49 AM Zhang Tianci <zhangtianci.1997@xxxxxxxxxxxxx> wrote: > > ovl_link() did not create a new inode after commit > 51f7e52dc943 ("ovl: share inode for hard link"), so > in ovl_create_or_link() we should not override cred's > fsuid and fsgid when called by ovl_link(). > > Signed-off-by: Zhang Tianci <zhangtianci.1997@xxxxxxxxxxxxx> > Signed-off-by: Jiachen Zhang <zhangjiachen.jaycee@xxxxxxxxxxxxx> > --- > fs/overlayfs/dir.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c > index 6b03457f72bb..568d338032db 100644 > --- a/fs/overlayfs/dir.c > +++ b/fs/overlayfs/dir.c > @@ -595,9 +595,9 @@ static int ovl_create_or_link(struct dentry *dentry, struct inode *inode, > err = -ENOMEM; > override_cred = prepare_creds(); > if (override_cred) { > - override_cred->fsuid = inode->i_uid; > - override_cred->fsgid = inode->i_gid; > if (!attr->hardlink) { > + override_cred->fsuid = inode->i_uid; > + override_cred->fsgid = inode->i_gid; > err = security_dentry_create_files_as(dentry, > attr->mode, &dentry->d_name, old_cred, > override_cred); > -- This change looks incorrect. Unless I am missing something, fsuid/fsgid still need to be overridden for calling link() on underlying fs. What made you do this change? Thanks, Amir.