提交 c11b9fdd 编写于 作者: M Miklos Szeredi

ovl: remove posix_acl_default from workdir

Clear out posix acl xattrs on workdir and also reset the mode after
creation so that an inherited sgid bit is cleared.
Signed-off-by: NMiklos Szeredi <mszeredi@redhat.com>
Cc: <stable@vger.kernel.org>
上级 38b25697
......@@ -814,6 +814,10 @@ static struct dentry *ovl_workdir_create(struct vfsmount *mnt,
struct kstat stat = {
.mode = S_IFDIR | 0,
};
struct iattr attr = {
.ia_valid = ATTR_MODE,
.ia_mode = stat.mode,
};
if (work->d_inode) {
err = -EEXIST;
......@@ -829,6 +833,21 @@ static struct dentry *ovl_workdir_create(struct vfsmount *mnt,
err = ovl_create_real(dir, work, &stat, NULL, NULL, true);
if (err)
goto out_dput;
err = vfs_removexattr(work, XATTR_NAME_POSIX_ACL_DEFAULT);
if (err && err != -ENODATA)
goto out_dput;
err = vfs_removexattr(work, XATTR_NAME_POSIX_ACL_ACCESS);
if (err && err != -ENODATA)
goto out_dput;
/* Clear any inherited mode bits */
inode_lock(work->d_inode);
err = notify_change(work, &attr, NULL);
inode_unlock(work->d_inode);
if (err)
goto out_dput;
}
out_unlock:
inode_unlock(dir);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册