[PATCH 02/11] fs/ntfs3: Remove noacsrules

From: Konstantin Komarov
Date: Wed Feb 15 2023 - 08:35:07 EST


Currently, this option does not work properly. Its use leads to unstable results.
If we figure out how to implement it without errors, we will add it later.

Signed-off-by: Konstantin Komarov <almaz.alexandrovich@xxxxxxxxxxxxxxxxxxxx>
---
 Documentation/filesystems/ntfs3.rst | 11 -----------
 fs/ntfs3/file.c                     | 11 -----------
 fs/ntfs3/inode.c                    |  1 -
 fs/ntfs3/namei.c                    |  1 -
 fs/ntfs3/ntfs_fs.h                  |  3 ---
 fs/ntfs3/super.c                    |  9 +--------
 fs/ntfs3/xattr.c                    | 14 --------------
 7 files changed, 1 insertion(+), 49 deletions(-)

diff --git a/Documentation/filesystems/ntfs3.rst b/Documentation/filesystems/ntfs3.rst
index 5aa102bd72c2..f0cf05cad2ba 100644
--- a/Documentation/filesystems/ntfs3.rst
+++ b/Documentation/filesystems/ntfs3.rst
@@ -61,17 +61,6 @@ this table marked with no it means default is without **no**.
        directories, fmask applies only to files and dmask only to directories.
    * - fmask=

-   * - noacsrules
-     - "No access rules" mount option sets access rights for files/folders to
-       777 and owner/group to root. This mount option absorbs all other
-       permissions.
-
-       - Permissions change for files/folders will be reported as successful,
-     but they will remain 777.
-
-       - Owner/group change will be reported as successful, butthey will stay
-     as root.
-
    * - nohidden
      - Files with the Windows-specific HIDDEN (FILE_ATTRIBUTE_HIDDEN) attribute
        will not be shown under Linux.
diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c
index d37df7376543..9cef189fc0c5 100644
--- a/fs/ntfs3/file.c
+++ b/fs/ntfs3/file.c
@@ -654,22 +654,12 @@ static long ntfs_fallocate(struct file *file, int mode, loff_t vbo, loff_t len)
 int ntfs3_setattr(struct user_namespace *mnt_userns, struct dentry *dentry,
           struct iattr *attr)
 {
-    struct super_block *sb = dentry->d_sb;
-    struct ntfs_sb_info *sbi = sb->s_fs_info;
     struct inode *inode = d_inode(dentry);
     struct ntfs_inode *ni = ntfs_i(inode);
     u32 ia_valid = attr->ia_valid;
     umode_t mode = inode->i_mode;
     int err;

-    if (sbi->options->noacsrules) {
-        /* "No access rules" - Force any changes of time etc. */
-        attr->ia_valid |= ATTR_FORCE;
-        /* and disable for editing some attributes. */
-        attr->ia_valid &= ~(ATTR_UID | ATTR_GID | ATTR_MODE);
-        ia_valid = attr->ia_valid;
-    }
-
     err = setattr_prepare(mnt_userns, dentry, attr);
     if (err)
         goto out;
@@ -1153,7 +1143,6 @@ const struct inode_operations ntfs_file_inode_operations = {
     .getattr    = ntfs_getattr,
     .setattr    = ntfs3_setattr,
     .listxattr    = ntfs_listxattr,
-    .permission    = ntfs_permission,
     .get_inode_acl    = ntfs_get_acl,
     .set_acl    = ntfs_set_acl,
     .fiemap        = ntfs_fiemap,
diff --git a/fs/ntfs3/inode.c b/fs/ntfs3/inode.c
index 5e06299591ed..51e342ad79fd 100644
--- a/fs/ntfs3/inode.c
+++ b/fs/ntfs3/inode.c
@@ -2070,7 +2070,6 @@ const struct inode_operations ntfs_link_inode_operations = {
     .get_link    = ntfs_get_link,
     .setattr    = ntfs3_setattr,
     .listxattr    = ntfs_listxattr,
-    .permission    = ntfs_permission,
 };

 const struct address_space_operations ntfs_aops = {
diff --git a/fs/ntfs3/namei.c b/fs/ntfs3/namei.c
index 53ddea219e37..5d5fe2f1f77c 100644
--- a/fs/ntfs3/namei.c
+++ b/fs/ntfs3/namei.c
@@ -607,7 +607,6 @@ const struct inode_operations ntfs_dir_inode_operations = {
     .rmdir        = ntfs_rmdir,
     .mknod        = ntfs_mknod,
     .rename        = ntfs_rename,
-    .permission    = ntfs_permission,
     .get_inode_acl    = ntfs_get_acl,
     .set_acl    = ntfs_set_acl,
     .setattr    = ntfs3_setattr,
diff --git a/fs/ntfs3/ntfs_fs.h b/fs/ntfs3/ntfs_fs.h
index 2050eb3f6a5a..556b76f526cb 100644
--- a/fs/ntfs3/ntfs_fs.h
+++ b/fs/ntfs3/ntfs_fs.h
@@ -100,7 +100,6 @@ struct ntfs_mount_options {
     unsigned hide_dot_files : 1; /* Set hidden flag on dot files. */
     unsigned windows_names : 1; /* Disallow names forbidden by Windows. */
     unsigned force : 1; /* RW mount dirty volume. */
-    unsigned noacsrules : 1; /* Exclude acs rules. */
     unsigned prealloc : 1; /* Preallocate space when file is growing. */
     unsigned nocase : 1; /* case insensitive. */
 };
@@ -868,8 +867,6 @@ int ntfs_init_acl(struct user_namespace *mnt_userns, struct inode *inode,
 #endif

 int ntfs_acl_chmod(struct user_namespace *mnt_userns, struct dentry *dentry);
-int ntfs_permission(struct user_namespace *mnt_userns, 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 19d0889b131f..10c019ef7da3 100644
--- a/fs/ntfs3/super.c
+++ b/fs/ntfs3/super.c
@@ -253,7 +253,6 @@ enum Opt {
     Opt_acl,
     Opt_iocharset,
     Opt_prealloc,
-    Opt_noacsrules,
     Opt_nocase,
     Opt_err,
 };
@@ -274,7 +273,6 @@ static const struct fs_parameter_spec ntfs_fs_parameters[] = {
     fsparam_flag_no("acl",            Opt_acl),
     fsparam_flag_no("showmeta",        Opt_showmeta),
     fsparam_flag_no("prealloc",        Opt_prealloc),
-    fsparam_flag_no("acsrules",        Opt_noacsrules),
     fsparam_flag_no("nocase",        Opt_nocase),
     fsparam_string("iocharset",        Opt_iocharset),
     {}
@@ -387,9 +385,6 @@ static int ntfs_fs_parse_param(struct fs_context *fc,
     case Opt_prealloc:
         opts->prealloc = result.negated ? 0 : 1;
         break;
-    case Opt_noacsrules:
-        opts->noacsrules = result.negated ? 1 : 0;
-        break;
     case Opt_nocase:
         opts->nocase = result.negated ? 1 : 0;
         break;
@@ -572,8 +567,6 @@ static int ntfs_show_options(struct seq_file *m, struct dentry *root)
         seq_puts(m, ",hide_dot_files");
     if (opts->force)
         seq_puts(m, ",force");
-    if (opts->noacsrules)
-        seq_puts(m, ",noacsrules");
     if (opts->prealloc)
         seq_puts(m, ",prealloc");
     if (sb->s_flags & SB_POSIXACL)
@@ -791,7 +784,7 @@ static int ntfs_init_from_boot(struct super_block *sb, u32 sector_size,
     if (boot_sector_size != sector_size) {
         ntfs_warn(
             sb,
-            "Different NTFS' sector size (%u) and media sector size (%u)",
+            "Different NTFS sector size (%u) and media sector size (%u)",
             boot_sector_size, sector_size);
         dev_size += sector_size - 1;
     }
diff --git a/fs/ntfs3/xattr.c b/fs/ntfs3/xattr.c
index 3fa48c8f68d9..c42fbc56eb39 100644
--- a/fs/ntfs3/xattr.c
+++ b/fs/ntfs3/xattr.c
@@ -711,20 +711,6 @@ int ntfs_acl_chmod(struct user_namespace *mnt_userns, struct dentry *dentry)
     return posix_acl_chmod(mnt_userns, dentry, inode->i_mode);
 }

-/*
- * ntfs_permission - inode_operations::permission
- */
-int ntfs_permission(struct user_namespace *mnt_userns, struct inode *inode,
-            int mask)
-{
-    if (ntfs_sb(inode->i_sb)->options->noacsrules) {
-        /* "No access rules" mode - Allow all changes. */
-        return 0;
-    }
-
-    return generic_permission(mnt_userns, inode, mask);
-}
-
 /*
  * ntfs_listxattr - inode_operations::listxattr
  */
--
2.34.1