summarylogtreecommitdiffstats
path: root/kernel-5.12-backport.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kernel-5.12-backport.patch')
-rw-r--r--kernel-5.12-backport.patch219
1 files changed, 123 insertions, 96 deletions
diff --git a/kernel-5.12-backport.patch b/kernel-5.12-backport.patch
index 1a0c273854be..78bbbc9d584b 100644
--- a/kernel-5.12-backport.patch
+++ b/kernel-5.12-backport.patch
@@ -1,15 +1,15 @@
--- a/file.c
+++ b/file.c
-@@ -76,7 +76,7 @@
+@@ -70,7 +70,7 @@
/*
- * inode_operations::getattr
+ * ntfs_getattr - inode_operations::getattr
*/
-int ntfs_getattr(struct user_namespace *mnt_userns, const struct path *path,
+int ntfs_getattr(const struct path *path,
struct kstat *stat, u32 request_mask, u32 flags)
{
struct inode *inode = d_inode(path->dentry);
-@@ -90,7 +90,7 @@
+@@ -84,7 +84,7 @@
stat->attributes_mask |= STATX_ATTR_COMPRESSED | STATX_ATTR_ENCRYPTED;
@@ -18,16 +18,16 @@
stat->result_mask |= STATX_BTIME;
stat->btime = ni->i_crtime;
-@@ -614,7 +614,7 @@
+@@ -726,7 +726,7 @@
/*
- * inode_operations::setattr
+ * ntfs3_setattr - inode_operations::setattr
*/
-int ntfs3_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
+int ntfs3_setattr(struct dentry *dentry,
struct iattr *attr)
{
struct super_block *sb = dentry->d_sb;
-@@ -633,7 +633,7 @@
+@@ -745,7 +745,7 @@
ia_valid = attr->ia_valid;
}
@@ -36,7 +36,7 @@
if (err)
goto out;
-@@ -658,10 +658,10 @@
+@@ -770,10 +770,10 @@
ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
}
@@ -52,7 +52,7 @@
--- a/fsntfs.c
+++ b/fsntfs.c
-@@ -1620,7 +1620,7 @@
+@@ -1602,7 +1602,7 @@
lbo = (u64)lcn << cluster_bits;
len = (u64)clen << cluster_bits;
new_bio:
@@ -64,7 +64,7 @@
--- a/inode.c
+++ b/inode.c
-@@ -1176,7 +1176,7 @@
+@@ -1171,7 +1171,7 @@
return ERR_PTR(err);
}
@@ -73,10 +73,19 @@
struct inode *dir, struct dentry *dentry,
const struct cpu_str *uni, umode_t mode,
dev_t dev, const char *symname, u32 size,
-@@ -1577,7 +1577,7 @@
+@@ -1284,7 +1284,7 @@
+ goto out3;
+ }
+ inode = &ni->vfs_inode;
+- inode_init_owner(mnt_userns, inode, dir, mode);
++ inode_init_owner(inode, dir, mode);
+ mode = inode->i_mode;
+
+ inode->i_atime = inode->i_mtime = inode->i_ctime = ni->i_crtime =
+@@ -1575,7 +1575,7 @@
#ifdef CONFIG_NTFS3_FS_POSIX_ACL
- if (!is_link && (sb->s_flags & SB_POSIXACL)) {
+ if (!S_ISLNK(mode) && (sb->s_flags & SB_POSIXACL)) {
- err = ntfs_init_acl(mnt_userns, inode, dir);
+ err = ntfs_init_acl(inode, dir);
if (err)
@@ -85,85 +94,94 @@
--- a/namei.c
+++ b/namei.c
-@@ -102,7 +102,7 @@
- *
- * inode_operations::create
+@@ -96,7 +96,7 @@
+ /*
+ * ntfs_create - inode_operations::create
*/
-static int ntfs_create(struct user_namespace *mnt_userns, struct inode *dir,
+static int ntfs_create(struct inode *dir,
struct dentry *dentry, umode_t mode, bool excl)
{
struct ntfs_inode *ni = ntfs_i(dir);
-@@ -110,7 +110,7 @@
+@@ -104,7 +104,7 @@
ni_lock_dir(ni);
- inode = ntfs_create_inode(mnt_userns, dir, dentry, NULL, S_IFREG | mode,
+ inode = ntfs_create_inode(dir, dentry, NULL, S_IFREG | mode,
- 0, NULL, 0, excl, NULL);
+ 0, NULL, 0, NULL);
ni_unlock(ni);
-@@ -184,7 +184,7 @@
+@@ -117,7 +117,7 @@
*
- * inode_operations::symlink
+ * inode_operations::mknod
+ */
+-static int ntfs_mknod(struct user_namespace *mnt_userns, struct inode *dir,
++static int ntfs_mknod(struct inode *dir,
+ struct dentry *dentry, umode_t mode, dev_t rdev)
+ {
+ struct ntfs_inode *ni = ntfs_i(dir);
+@@ -125,7 +125,7 @@
+
+ ni_lock_dir(ni);
+
+- inode = ntfs_create_inode(mnt_userns, dir, dentry, NULL, mode, rdev,
++ inode = ntfs_create_inode(dir, dentry, NULL, mode, rdev,
+ NULL, 0, NULL);
+
+ ni_unlock(ni);
+@@ -195,7 +195,7 @@
+ /*
+ * ntfs_symlink - inode_operations::symlink
*/
-static int ntfs_symlink(struct user_namespace *mnt_userns, struct inode *dir,
+static int ntfs_symlink(struct inode *dir,
struct dentry *dentry, const char *symname)
{
u32 size = strlen(symname);
-@@ -193,7 +193,7 @@
+@@ -204,7 +204,7 @@
ni_lock_dir(ni);
- inode = ntfs_create_inode(mnt_userns, dir, dentry, NULL, S_IFLNK | 0777,
+ inode = ntfs_create_inode(dir, dentry, NULL, S_IFLNK | 0777,
- 0, symname, size, 0, NULL);
+ 0, symname, size, NULL);
ni_unlock(ni);
-@@ -206,7 +206,7 @@
- *
- * inode_operations::mkdir
+@@ -215,7 +215,7 @@
+ /*
+ * ntfs_mkdir- inode_operations::mkdir
*/
-static int ntfs_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
+static int ntfs_mkdir(struct inode *dir,
struct dentry *dentry, umode_t mode)
{
struct inode *inode;
-@@ -214,7 +214,7 @@
+@@ -223,7 +223,7 @@
ni_lock_dir(ni);
- inode = ntfs_create_inode(mnt_userns, dir, dentry, NULL, S_IFDIR | mode,
+ inode = ntfs_create_inode(dir, dentry, NULL, S_IFDIR | mode,
- 0, NULL, -1, 0, NULL);
+ 0, NULL, 0, NULL);
ni_unlock(ni);
-@@ -246,7 +246,7 @@
- *
- * inode_operations::rename
+@@ -251,7 +251,7 @@
+ /*
+ * ntfs_rename - inode_operations::rename
*/
--static int ntfs_rename(struct user_namespace *mnt_userns, struct inode *old_dir,
-+static int ntfs_rename(struct inode *old_dir,
- struct dentry *old_dentry, struct inode *new_dir,
+-static int ntfs_rename(struct user_namespace *mnt_userns, struct inode *dir,
++static int ntfs_rename(struct inode *dir,
+ struct dentry *dentry, struct inode *new_dir,
struct dentry *new_dentry, u32 flags)
{
-@@ -520,7 +520,7 @@
-
- /*fnd contains tree's path to insert to*/
- /* TODO: init_user_ns? */
-- inode = ntfs_create_inode(&init_user_ns, dir, dentry, uni, mode, 0,
-+ inode = ntfs_create_inode(dir, dentry, uni, mode, 0,
- NULL, 0, excl, fnd);
- err = IS_ERR(inode) ? PTR_ERR(inode)
- : finish_open(file, dentry, ntfs_file_open);
--- a/ntfs_fs.h
+++ b/ntfs_fs.h
-@@ -453,11 +453,11 @@
+@@ -459,11 +459,11 @@
extern const struct file_operations ntfs_dir_operations;
- /* globals from file.c*/
+ /* Globals from file.c */
-int ntfs_getattr(struct user_namespace *mnt_userns, const struct path *path,
+int ntfs_getattr(const struct path *path,
struct kstat *stat, u32 request_mask, u32 flags);
@@ -174,7 +192,7 @@
struct iattr *attr);
int ntfs_file_open(struct inode *inode, struct file *file);
int ntfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
-@@ -644,7 +644,7 @@
+@@ -668,7 +668,7 @@
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);
@@ -183,7 +201,7 @@
struct inode *dir, struct dentry *dentry,
const struct cpu_str *uni, umode_t mode,
dev_t dev, const char *symname, u32 size,
-@@ -784,17 +784,17 @@
+@@ -810,17 +810,17 @@
/* globals from xattr.c */
#ifdef CONFIG_NTFS3_FS_POSIX_ACL
struct posix_acl *ntfs_get_acl(struct inode *inode, int type);
@@ -208,7 +226,7 @@
--- a/super.c
+++ b/super.c
-@@ -542,10 +542,10 @@
+@@ -557,10 +557,10 @@
if (opts->uid)
seq_printf(m, ",uid=%u",
@@ -221,10 +239,19 @@
if (opts->fmask)
seq_printf(m, ",fmask=%04o", ~opts->fs_fmask_inv);
if (opts->dmask)
+@@ -1440,7 +1440,7 @@
+ .name = "ntfs3",
+ .mount = ntfs_mount,
+ .kill_sb = kill_block_super,
+- .fs_flags = FS_REQUIRES_DEV | FS_ALLOW_IDMAP,
++ .fs_flags = FS_REQUIRES_DEV,
+ };
+ // clang-format on
+
--- a/xattr.c
+++ b/xattr.c
-@@ -473,7 +473,7 @@
+@@ -484,7 +484,7 @@
kfree(acl);
}
@@ -233,16 +260,16 @@
struct inode *inode, int type,
int locked)
{
-@@ -509,7 +509,7 @@
+@@ -520,7 +520,7 @@
- /* Translate extended attribute to acl */
- if (err > 0) {
+ /* 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 {
-@@ -529,10 +529,10 @@
+@@ -538,10 +538,10 @@
struct posix_acl *ntfs_get_acl(struct inode *inode, int type)
{
/* TODO: init_user_ns? */
@@ -255,18 +282,18 @@
struct inode *inode, struct posix_acl *acl,
int type, int locked)
{
-@@ -590,7 +590,7 @@
- if (!value)
- return -ENOMEM;
+@@ -599,7 +599,7 @@
+ 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,13 +614,13 @@
- *
- * inode_operations::set_acl
+- err = posix_acl_to_xattr(mnt_userns, acl, value, size);
++ err = posix_acl_to_xattr(&init_user_ns, acl, value, size);
+ if (err < 0)
+ goto out;
+ }
+@@ -617,13 +617,13 @@
+ /*
+ * ntfs_set_acl - inode_operations::set_acl
*/
-int ntfs_set_acl(struct user_namespace *mnt_userns, struct inode *inode,
+int ntfs_set_acl(struct inode *inode,
@@ -281,7 +308,7 @@
struct inode *inode, int type, void *buffer,
size_t size)
{
-@@ -637,13 +637,13 @@
+@@ -642,13 +642,13 @@
if (!acl)
return -ENODATA;
@@ -297,27 +324,28 @@
struct inode *inode, int type, const void *value,
size_t size)
{
-@@ -653,23 +653,23 @@
- if (!(inode->i_sb->s_flags & SB_POSIXACL))
+@@ -660,24 +660,24 @@
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;
+ if (!value) {
+ acl = NULL;
+ } else {
+- 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);
@@ -325,16 +353,16 @@
release_and_out:
ntfs_posix_acl_release(acl);
-@@ -679,7 +679,7 @@
- /*
- * Initialize the ACLs of a new inode. Called from ntfs_create_inode.
+@@ -689,7 +689,7 @@
+ *
+ * Called from ntfs_create_inode().
*/
-int ntfs_init_acl(struct user_namespace *mnt_userns, struct inode *inode,
+int ntfs_init_acl(struct inode *inode,
struct inode *dir)
{
struct posix_acl *default_acl, *acl;
-@@ -691,7 +691,7 @@
+@@ -701,7 +701,7 @@
*/
inode->i_default_acl = NULL;
@@ -343,7 +371,7 @@
if (!default_acl || default_acl == ERR_PTR(-EOPNOTSUPP)) {
inode->i_mode &= ~current_umask();
-@@ -719,13 +719,13 @@
+@@ -729,13 +729,13 @@
}
if (default_acl)
@@ -359,16 +387,16 @@
1);
posix_acl_release(acl);
-@@ -742,7 +742,7 @@
- *
- * helper for 'ntfs3_setattr'
+@@ -750,7 +750,7 @@
+ /*
+ * ntfs_acl_chmod - 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 +752,7 @@
+@@ -760,7 +760,7 @@
if (S_ISLNK(inode->i_mode))
return -EOPNOTSUPP;
@@ -377,16 +405,16 @@
}
/*
-@@ -760,7 +760,7 @@
- *
- * inode_operations::permission
+@@ -766,7 +766,7 @@
+ /*
+ * ntfs_permission - inode_operations::permission
*/
-int ntfs_permission(struct user_namespace *mnt_userns, struct inode *inode,
+int ntfs_permission(struct inode *inode,
int mask)
{
if (ntfs_sb(inode->i_sb)->options.no_acs_rules) {
-@@ -768,7 +768,7 @@
+@@ -774,7 +774,7 @@
return 0;
}
@@ -395,7 +423,7 @@
}
/*
-@@ -882,7 +882,7 @@
+@@ -886,7 +886,7 @@
sizeof(XATTR_NAME_POSIX_ACL_DEFAULT)))) {
/* TODO: init_user_ns? */
err = ntfs_xattr_get_acl(
@@ -404,8 +432,8 @@
name_len == sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1
? ACL_TYPE_ACCESS
: ACL_TYPE_DEFAULT,
-@@ -903,7 +903,7 @@
- * inode_operations::setxattr
+@@ -905,7 +905,7 @@
+ * ntfs_setxattr - inode_operations::setxattr
*/
static noinline int ntfs_setxattr(const struct xattr_handler *handler,
- struct user_namespace *mnt_userns,
@@ -413,11 +441,10 @@
struct dentry *de, struct inode *inode,
const char *name, const void *value,
size_t size, int flags)
-@@ -1013,7 +1013,7 @@
+@@ -1015,6 +1015,6 @@
sizeof(XATTR_NAME_POSIX_ACL_DEFAULT)))) {
- /* TODO: init_user_ns? */
err = ntfs_xattr_set_acl(
-- &init_user_ns, inode,
+- mnt_userns, inode,
+ inode,
name_len == sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1
? ACL_TYPE_ACCESS