Loading fs/overlayfs/super.c +19 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); Loading Loading
fs/overlayfs/super.c +19 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); Loading