summarylogtreecommitdiffstats
path: root/kernel_version_fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kernel_version_fix.patch')
-rw-r--r--kernel_version_fix.patch487
1 files changed, 487 insertions, 0 deletions
diff --git a/kernel_version_fix.patch b/kernel_version_fix.patch
new file mode 100644
index 000000000000..dbef084ed18f
--- /dev/null
+++ b/kernel_version_fix.patch
@@ -0,0 +1,487 @@
+From e487427ef07c735fdc711a56d1ceac6629c34dcf Mon Sep 17 00:00:00 2001
+From: Oleksandr Natalenko <oleksandr@natalenko.name>
+Date: Fri, 12 Feb 2021 20:11:54 +0100
+Subject: [PATCH] ntfs3-5.11: throw away userns changes from linux-next
+
+Signed-off-by: Oleksandr Natalenko <oleksandr@natalenko.name>
+---
+ fs/ntfs3/file.c | 15 ++++++------
+ fs/ntfs3/inode.c | 10 ++++----
+ fs/ntfs3/namei.c | 34 ++++++++++++--------------
+ fs/ntfs3/ntfs_fs.h | 26 +++++++++-----------
+ fs/ntfs3/super.c | 5 ++--
+ fs/ntfs3/xattr.c | 61 ++++++++++++++++++----------------------------
+ 6 files changed, 65 insertions(+), 86 deletions(-)
+
+diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c
+index d5bbe06ddb0d..3886a4a27fa5 100644
+--- a/fs/ntfs3/file.c
++++ b/fs/ntfs3/file.c
+@@ -76,8 +76,8 @@ static long ntfs_compat_ioctl(struct file *filp, u32 cmd, unsigned long arg)
+ /*
+ * inode_operations::getattr
+ */
+-int ntfs_getattr(struct user_namespace *mnt_userns, const struct path *path,
+- struct kstat *stat, u32 request_mask, u32 flags)
++int ntfs_getattr(const struct path *path, struct kstat *stat, u32 request_mask,
++ u32 flags)
+ {
+ struct inode *inode = d_inode(path->dentry);
+ struct ntfs_inode *ni = ntfs_i(inode);
+@@ -90,7 +90,7 @@ int ntfs_getattr(struct user_namespace *mnt_userns, const struct path *path,
+
+ stat->attributes_mask |= STATX_ATTR_COMPRESSED | STATX_ATTR_ENCRYPTED;
+
+- generic_fillattr(mnt_userns, inode, stat);
++ generic_fillattr(inode, stat);
+
+ stat->result_mask |= STATX_BTIME;
+ stat->btime = ni->i_crtime;
+@@ -614,8 +614,7 @@ static long ntfs_fallocate(struct file *file, int mode, loff_t vbo, loff_t len)
+ /*
+ * inode_operations::setattr
+ */
+-int ntfs3_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
+- struct iattr *attr)
++int ntfs3_setattr(struct dentry *dentry, struct iattr *attr)
+ {
+ struct super_block *sb = dentry->d_sb;
+ struct ntfs_sb_info *sbi = sb->s_fs_info;
+@@ -633,7 +632,7 @@ int ntfs3_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
+ ia_valid = attr->ia_valid;
+ }
+
+- err = setattr_prepare(mnt_userns, dentry, attr);
++ err = setattr_prepare(dentry, attr);
+ if (err)
+ goto out;
+
+@@ -658,10 +657,10 @@ int ntfs3_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
+ ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
+ }
+
+- setattr_copy(mnt_userns, inode, attr);
++ setattr_copy(inode, attr);
+
+ if (mode != inode->i_mode) {
+- err = ntfs_acl_chmod(mnt_userns, inode);
++ err = ntfs_acl_chmod(inode);
+ if (err)
+ goto out;
+
+diff --git a/fs/ntfs3/inode.c b/fs/ntfs3/inode.c
+index 1ab2e500b8b0..504d783f6ff9 100644
+--- a/fs/ntfs3/inode.c
++++ b/fs/ntfs3/inode.c
+@@ -1176,10 +1176,10 @@ ntfs_create_reparse_buffer(struct ntfs_sb_info *sbi, const char *symname,
+ return ERR_PTR(err);
+ }
+
+-int ntfs_create_inode(struct user_namespace *mnt_userns, struct inode *dir,
+- struct dentry *dentry, const struct cpu_str *uni,
+- umode_t mode, dev_t dev, const char *symname, u32 size,
+- int excl, struct ntfs_fnd *fnd, struct inode **new_inode)
++int ntfs_create_inode(struct inode *dir, struct dentry *dentry,
++ const struct cpu_str *uni, umode_t mode, dev_t dev,
++ const char *symname, u32 size, int excl,
++ struct ntfs_fnd *fnd, struct inode **new_inode)
+ {
+ int err;
+ struct super_block *sb = dir->i_sb;
+@@ -1585,7 +1585,7 @@ int ntfs_create_inode(struct user_namespace *mnt_userns, struct inode *dir,
+
+ #ifdef CONFIG_NTFS3_FS_POSIX_ACL
+ if (!is_link && (sb->s_flags & SB_POSIXACL)) {
+- err = ntfs_init_acl(mnt_userns, inode, dir);
++ err = ntfs_init_acl(inode, dir);
+ if (err)
+ goto out6;
+ } else
+diff --git a/fs/ntfs3/namei.c b/fs/ntfs3/namei.c
+index 5e3b928984fe..34d89ec2a303 100644
+--- a/fs/ntfs3/namei.c
++++ b/fs/ntfs3/namei.c
+@@ -102,8 +102,8 @@ static struct dentry *ntfs_lookup(struct inode *dir, struct dentry *dentry,
+ *
+ * inode_operations::create
+ */
+-static int ntfs_create(struct user_namespace *mnt_userns, struct inode *dir,
+- struct dentry *dentry, umode_t mode, bool excl)
++static int ntfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
++ bool excl)
+ {
+ int err;
+ struct ntfs_inode *ni = ntfs_i(dir);
+@@ -111,8 +111,8 @@ static int ntfs_create(struct user_namespace *mnt_userns, struct inode *dir,
+
+ ni_lock_dir(ni);
+
+- err = ntfs_create_inode(mnt_userns, dir, dentry, NULL, S_IFREG | mode,
+- 0, NULL, 0, excl, NULL, &inode);
++ err = ntfs_create_inode(dir, dentry, NULL, S_IFREG | mode, 0, NULL, 0,
++ excl, NULL, &inode);
+
+ ni_unlock(ni);
+
+@@ -185,8 +185,8 @@ static int ntfs_unlink(struct inode *dir, struct dentry *dentry)
+ *
+ * inode_operations::symlink
+ */
+-static int ntfs_symlink(struct user_namespace *mnt_userns, struct inode *dir,
+- struct dentry *dentry, const char *symname)
++static int ntfs_symlink(struct inode *dir, struct dentry *dentry,
++ const char *symname)
+ {
+ int err;
+ u32 size = strlen(symname);
+@@ -195,8 +195,8 @@ static int ntfs_symlink(struct user_namespace *mnt_userns, struct inode *dir,
+
+ ni_lock_dir(ni);
+
+- err = ntfs_create_inode(mnt_userns, dir, dentry, NULL, S_IFLNK | 0777,
+- 0, symname, size, 0, NULL, &inode);
++ err = ntfs_create_inode(dir, dentry, NULL, S_IFLNK | 0777, 0, symname,
++ size, 0, NULL, &inode);
+
+ ni_unlock(ni);
+
+@@ -208,8 +208,7 @@ static int ntfs_symlink(struct user_namespace *mnt_userns, struct inode *dir,
+ *
+ * inode_operations::mkdir
+ */
+-static int ntfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
+- struct dentry *dentry, umode_t mode)
++static int ntfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
+ {
+ int err;
+ struct inode *inode;
+@@ -217,8 +216,8 @@ static int ntfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
+
+ ni_lock_dir(ni);
+
+- err = ntfs_create_inode(mnt_userns, dir, dentry, NULL, S_IFDIR | mode,
+- 0, NULL, -1, 0, NULL, &inode);
++ err = ntfs_create_inode(dir, dentry, NULL, S_IFDIR | mode, 0, NULL, -1,
++ 0, NULL, &inode);
+
+ ni_unlock(ni);
+
+@@ -249,9 +248,9 @@ static int ntfs_rmdir(struct inode *dir, struct dentry *dentry)
+ *
+ * inode_operations::rename
+ */
+-static int ntfs_rename(struct user_namespace *mnt_userns, struct inode *old_dir,
+- struct dentry *old_dentry, struct inode *new_dir,
+- struct dentry *new_dentry, u32 flags)
++static int ntfs_rename(struct inode *old_dir, struct dentry *old_dentry,
++ struct inode *new_dir, struct dentry *new_dentry,
++ u32 flags)
+ {
+ int err;
+ struct super_block *sb = old_dir->i_sb;
+@@ -533,9 +532,8 @@ static int ntfs_atomic_open(struct inode *dir, struct dentry *dentry,
+ file->f_mode |= FMODE_CREATED;
+
+ /*fnd contains tree's path to insert to*/
+- /* TODO: init_user_ns? */
+- err = ntfs_create_inode(&init_user_ns, dir, dentry, uni, mode, 0, NULL,
+- 0, excl, fnd, &inode);
++ err = ntfs_create_inode(dir, dentry, uni, mode, 0, NULL, 0, excl, fnd,
++ &inode);
+ if (!err)
+ err = finish_open(file, dentry, ntfs_file_open);
+ dput(d);
+diff --git a/fs/ntfs3/ntfs_fs.h b/fs/ntfs3/ntfs_fs.h
+index 25069b8c46e5..6e5afe3dc943 100644
+--- a/fs/ntfs3/ntfs_fs.h
++++ b/fs/ntfs3/ntfs_fs.h
+@@ -454,12 +454,11 @@ bool dir_is_empty(struct inode *dir);
+ extern const struct file_operations ntfs_dir_operations;
+
+ /* globals from file.c*/
+-int ntfs_getattr(struct user_namespace *mnt_userns, const struct path *path,
+- struct kstat *stat, u32 request_mask, u32 flags);
++int ntfs_getattr(const struct path *path, struct kstat *stat, u32 request_mask,
++ u32 flags);
+ void ntfs_sparse_cluster(struct inode *inode, struct page *page0, CLST vcn,
+ CLST len);
+-int ntfs3_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
+- struct iattr *attr);
++int ntfs3_setattr(struct dentry *dentry, struct iattr *attr);
+ int ntfs_file_open(struct inode *inode, struct file *file);
+ int ntfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
+ __u64 start, __u64 len);
+@@ -645,10 +644,10 @@ int ntfs_sync_inode(struct inode *inode);
+ int ntfs_flush_inodes(struct super_block *sb, struct inode *i1,
+ struct inode *i2);
+ int inode_write_data(struct inode *inode, const void *data, size_t bytes);
+-int ntfs_create_inode(struct user_namespace *mnt_userns, struct inode *dir,
+- struct dentry *dentry, const struct cpu_str *uni,
+- umode_t mode, dev_t dev, const char *symname, u32 size,
+- int excl, struct ntfs_fnd *fnd, struct inode **new_inode);
++int ntfs_create_inode(struct inode *dir, struct dentry *dentry,
++ const struct cpu_str *uni, umode_t mode, dev_t dev,
++ const char *symname, u32 size, int excl,
++ struct ntfs_fnd *fnd, struct inode **new_inode);
+ int ntfs_link_inode(struct inode *inode, struct dentry *dentry);
+ int ntfs_unlink_inode(struct inode *dir, const struct dentry *dentry);
+ void ntfs_evict_inode(struct inode *inode);
+@@ -771,18 +770,15 @@ int ntfs_cmp_names_cpu(const struct cpu_str *uni1, const struct le_str *uni2,
+ /* globals from xattr.c */
+ #ifdef CONFIG_NTFS3_FS_POSIX_ACL
+ struct posix_acl *ntfs_get_acl(struct inode *inode, int type);
+-int ntfs_set_acl(struct user_namespace *mnt_userns, struct inode *inode,
+- struct posix_acl *acl, int type);
+-int ntfs_init_acl(struct user_namespace *mnt_userns, struct inode *inode,
+- struct inode *dir);
++int ntfs_set_acl(struct inode *inode, struct posix_acl *acl, int type);
++int ntfs_init_acl(struct inode *inode, struct inode *dir);
+ #else
+ #define ntfs_get_acl NULL
+ #define ntfs_set_acl NULL
+ #endif
+
+-int ntfs_acl_chmod(struct user_namespace *mnt_userns, struct inode *inode);
+-int ntfs_permission(struct user_namespace *mnt_userns, struct inode *inode,
+- int mask);
++int ntfs_acl_chmod(struct inode *inode);
++int ntfs_permission(struct inode *inode, int mask);
+ ssize_t ntfs_listxattr(struct dentry *dentry, char *buffer, size_t size);
+ extern const struct xattr_handler *ntfs_xattr_handlers[];
+
+diff --git a/fs/ntfs3/super.c b/fs/ntfs3/super.c
+index 7d09d3eaaf2a..69c8a7d33f9d 100644
+--- a/fs/ntfs3/super.c
++++ b/fs/ntfs3/super.c
+@@ -544,14 +544,13 @@ static int ntfs_show_options(struct seq_file *m, struct dentry *root)
+ struct super_block *sb = root->d_sb;
+ struct ntfs_sb_info *sbi = sb->s_fs_info;
+ struct ntfs_mount_options *opts = &sbi->options;
+- struct user_namespace *user_ns = seq_user_ns(m);
+
+ if (opts->uid)
+ seq_printf(m, ",uid=%u",
+- from_kuid_munged(user_ns, opts->fs_uid));
++ from_kuid_munged(&init_user_ns, opts->fs_uid));
+ if (opts->gid)
+ seq_printf(m, ",gid=%u",
+- from_kgid_munged(user_ns, opts->fs_gid));
++ from_kgid_munged(&init_user_ns, opts->fs_gid));
+ if (opts->fmask)
+ seq_printf(m, ",fmask=%04o", ~opts->fs_fmask_inv);
+ if (opts->dmask)
+diff --git a/fs/ntfs3/xattr.c b/fs/ntfs3/xattr.c
+index ffe329315b12..f94f215c1078 100644
+--- a/fs/ntfs3/xattr.c
++++ b/fs/ntfs3/xattr.c
+@@ -473,8 +473,7 @@ static inline void ntfs_posix_acl_release(struct posix_acl *acl)
+ kfree(acl);
+ }
+
+-static struct posix_acl *ntfs_get_acl_ex(struct user_namespace *mnt_userns,
+- struct inode *inode, int type,
++static struct posix_acl *ntfs_get_acl_ex(struct inode *inode, int type,
+ int locked)
+ {
+ struct ntfs_inode *ni = ntfs_i(inode);
+@@ -509,7 +508,7 @@ static struct posix_acl *ntfs_get_acl_ex(struct user_namespace *mnt_userns,
+
+ /* Translate extended attribute to acl */
+ if (err > 0) {
+- acl = posix_acl_from_xattr(mnt_userns, buf, err);
++ acl = posix_acl_from_xattr(&init_user_ns, buf, err);
+ if (!IS_ERR(acl))
+ set_cached_acl(inode, type, acl);
+ } else {
+@@ -528,12 +527,10 @@ static struct posix_acl *ntfs_get_acl_ex(struct user_namespace *mnt_userns,
+ */
+ struct posix_acl *ntfs_get_acl(struct inode *inode, int type)
+ {
+- /* TODO: init_user_ns? */
+- return ntfs_get_acl_ex(&init_user_ns, inode, type, 0);
++ return ntfs_get_acl_ex(inode, type, 0);
+ }
+
+-static noinline int ntfs_set_acl_ex(struct user_namespace *mnt_userns,
+- struct inode *inode, struct posix_acl *acl,
++static noinline int ntfs_set_acl_ex(struct inode *inode, struct posix_acl *acl,
+ int type, int locked)
+ {
+ const char *name;
+@@ -590,7 +587,7 @@ static noinline int ntfs_set_acl_ex(struct user_namespace *mnt_userns,
+ if (!value)
+ return -ENOMEM;
+
+- err = posix_acl_to_xattr(mnt_userns, acl, value, size);
++ err = posix_acl_to_xattr(&init_user_ns, acl, value, size);
+ if (err)
+ goto out;
+
+@@ -614,14 +611,12 @@ static noinline int ntfs_set_acl_ex(struct user_namespace *mnt_userns,
+ *
+ * inode_operations::set_acl
+ */
+-int ntfs_set_acl(struct user_namespace *mnt_userns, struct inode *inode,
+- struct posix_acl *acl, int type)
++int ntfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
+ {
+- return ntfs_set_acl_ex(mnt_userns, inode, acl, type, 0);
++ return ntfs_set_acl_ex(inode, acl, type, 0);
+ }
+
+-static int ntfs_xattr_get_acl(struct user_namespace *mnt_userns,
+- struct inode *inode, int type, void *buffer,
++static int ntfs_xattr_get_acl(struct inode *inode, int type, void *buffer,
+ size_t size)
+ {
+ struct posix_acl *acl;
+@@ -637,14 +632,13 @@ static int ntfs_xattr_get_acl(struct user_namespace *mnt_userns,
+ if (!acl)
+ return -ENODATA;
+
+- err = posix_acl_to_xattr(mnt_userns, acl, buffer, size);
++ err = posix_acl_to_xattr(&init_user_ns, acl, buffer, size);
+ ntfs_posix_acl_release(acl);
+
+ return err;
+ }
+
+-static int ntfs_xattr_set_acl(struct user_namespace *mnt_userns,
+- struct inode *inode, int type, const void *value,
++static int ntfs_xattr_set_acl(struct inode *inode, int type, const void *value,
+ size_t size)
+ {
+ struct posix_acl *acl;
+@@ -653,23 +647,23 @@ static int ntfs_xattr_set_acl(struct user_namespace *mnt_userns,
+ if (!(inode->i_sb->s_flags & SB_POSIXACL))
+ return -EOPNOTSUPP;
+
+- if (!inode_owner_or_capable(mnt_userns, inode))
++ if (!inode_owner_or_capable(inode))
+ return -EPERM;
+
+ if (!value)
+ return 0;
+
+- acl = posix_acl_from_xattr(mnt_userns, value, size);
++ acl = posix_acl_from_xattr(&init_user_ns, value, size);
+ if (IS_ERR(acl))
+ return PTR_ERR(acl);
+
+ if (acl) {
+- err = posix_acl_valid(mnt_userns, acl);
++ err = posix_acl_valid(&init_user_ns, acl);
+ if (err)
+ goto release_and_out;
+ }
+
+- err = ntfs_set_acl(mnt_userns, inode, acl, type);
++ err = ntfs_set_acl(inode, acl, type);
+
+ release_and_out:
+ ntfs_posix_acl_release(acl);
+@@ -679,8 +673,7 @@ static int ntfs_xattr_set_acl(struct user_namespace *mnt_userns,
+ /*
+ * Initialize the ACLs of a new inode. Called from ntfs_create_inode.
+ */
+-int ntfs_init_acl(struct user_namespace *mnt_userns, struct inode *inode,
+- struct inode *dir)
++int ntfs_init_acl(struct inode *inode, struct inode *dir)
+ {
+ struct posix_acl *default_acl, *acl;
+ int err;
+@@ -691,7 +684,7 @@ int ntfs_init_acl(struct user_namespace *mnt_userns, struct inode *inode,
+ */
+ inode->i_default_acl = NULL;
+
+- default_acl = ntfs_get_acl_ex(mnt_userns, dir, ACL_TYPE_DEFAULT, 1);
++ default_acl = ntfs_get_acl_ex(dir, ACL_TYPE_DEFAULT, 1);
+
+ if (!default_acl || default_acl == ERR_PTR(-EOPNOTSUPP)) {
+ inode->i_mode &= ~current_umask();
+@@ -719,14 +712,12 @@ int ntfs_init_acl(struct user_namespace *mnt_userns, struct inode *inode,
+ }
+
+ if (default_acl)
+- err = ntfs_set_acl_ex(mnt_userns, inode, default_acl,
+- ACL_TYPE_DEFAULT, 1);
++ err = ntfs_set_acl_ex(inode, default_acl, ACL_TYPE_DEFAULT, 1);
+
+ if (!acl)
+ inode->i_acl = NULL;
+ else if (!err)
+- err = ntfs_set_acl_ex(mnt_userns, inode, acl, ACL_TYPE_ACCESS,
+- 1);
++ err = ntfs_set_acl_ex(inode, acl, ACL_TYPE_ACCESS, 1);
+
+ posix_acl_release(acl);
+ out1:
+@@ -742,7 +733,7 @@ int ntfs_init_acl(struct user_namespace *mnt_userns, struct inode *inode,
+ *
+ * helper for 'ntfs3_setattr'
+ */
+-int ntfs_acl_chmod(struct user_namespace *mnt_userns, struct inode *inode)
++int ntfs_acl_chmod(struct inode *inode)
+ {
+ struct super_block *sb = inode->i_sb;
+
+@@ -752,7 +743,7 @@ int ntfs_acl_chmod(struct user_namespace *mnt_userns, struct inode *inode)
+ if (S_ISLNK(inode->i_mode))
+ return -EOPNOTSUPP;
+
+- return posix_acl_chmod(mnt_userns, inode, inode->i_mode);
++ return posix_acl_chmod(inode, inode->i_mode);
+ }
+
+ /*
+@@ -760,15 +751,14 @@ int ntfs_acl_chmod(struct user_namespace *mnt_userns, struct inode *inode)
+ *
+ * inode_operations::permission
+ */
+-int ntfs_permission(struct user_namespace *mnt_userns, struct inode *inode,
+- int mask)
++int ntfs_permission(struct inode *inode, int mask)
+ {
+ if (ntfs_sb(inode->i_sb)->options.no_acs_rules) {
+ /* "no access rules" mode - allow all changes */
+ return 0;
+ }
+
+- return generic_permission(mnt_userns, inode, mask);
++ return generic_permission(inode, mask);
+ }
+
+ /*
+@@ -884,9 +874,8 @@ static int ntfs_getxattr(const struct xattr_handler *handler, struct dentry *de,
+ (name_len == sizeof(XATTR_NAME_POSIX_ACL_DEFAULT) - 1 &&
+ !memcmp(name, XATTR_NAME_POSIX_ACL_DEFAULT,
+ sizeof(XATTR_NAME_POSIX_ACL_DEFAULT)))) {
+- /* TODO: init_user_ns? */
+ err = ntfs_xattr_get_acl(
+- &init_user_ns, inode,
++ inode,
+ name_len == sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1 ?
+ ACL_TYPE_ACCESS :
+ ACL_TYPE_DEFAULT,
+@@ -907,7 +896,6 @@ static int ntfs_getxattr(const struct xattr_handler *handler, struct dentry *de,
+ * inode_operations::setxattr
+ */
+ static noinline int ntfs_setxattr(const struct xattr_handler *handler,
+- struct user_namespace *mnt_userns,
+ struct dentry *de, struct inode *inode,
+ const char *name, const void *value,
+ size_t size, int flags)
+@@ -1015,9 +1003,8 @@ static noinline int ntfs_setxattr(const struct xattr_handler *handler,
+ (name_len == sizeof(XATTR_NAME_POSIX_ACL_DEFAULT) - 1 &&
+ !memcmp(name, XATTR_NAME_POSIX_ACL_DEFAULT,
+ sizeof(XATTR_NAME_POSIX_ACL_DEFAULT)))) {
+- /* TODO: init_user_ns? */
+ err = ntfs_xattr_set_acl(
+- &init_user_ns, inode,
++ inode,
+ name_len == sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1 ?
+ ACL_TYPE_ACCESS :
+ ACL_TYPE_DEFAULT,
+--
+GitLab
+