2023-02-15 13:39:01

by Konstantin Komarov

[permalink] [raw]
Subject: [PATCH 08/11] fs/ntfs3: Changed ntfs_get_acl() to use dentry

ntfs_get_acl changed to match new interface in struct inode_operations.

Signed-off-by: Konstantin Komarov <[email protected]>
---
 fs/ntfs3/file.c    |  2 +-
 fs/ntfs3/namei.c   |  4 ++--
 fs/ntfs3/ntfs_fs.h |  3 ++-
 fs/ntfs3/xattr.c   | 26 +++++++++-----------------
 4 files changed, 14 insertions(+), 21 deletions(-)

diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c
index df7b76d1c127..09b7931e6be3 100644
--- a/fs/ntfs3/file.c
+++ b/fs/ntfs3/file.c
@@ -1143,7 +1143,7 @@ const struct inode_operations
ntfs_file_inode_operations = {
     .getattr    = ntfs_getattr,
     .setattr    = ntfs3_setattr,
     .listxattr    = ntfs_listxattr,
-    .get_inode_acl    = ntfs_get_acl,
+    .get_acl    = ntfs_get_acl,
     .set_acl    = ntfs_set_acl,
     .fiemap        = ntfs_fiemap,
 };
diff --git a/fs/ntfs3/namei.c b/fs/ntfs3/namei.c
index 5d5fe2f1f77c..8b68ead5cc1f 100644
--- a/fs/ntfs3/namei.c
+++ b/fs/ntfs3/namei.c
@@ -607,7 +607,7 @@ const struct inode_operations
ntfs_dir_inode_operations = {
     .rmdir        = ntfs_rmdir,
     .mknod        = ntfs_mknod,
     .rename        = ntfs_rename,
-    .get_inode_acl    = ntfs_get_acl,
+    .get_acl    = ntfs_get_acl,
     .set_acl    = ntfs_set_acl,
     .setattr    = ntfs3_setattr,
     .getattr    = ntfs_getattr,
@@ -620,7 +620,7 @@ const struct inode_operations
ntfs_special_inode_operations = {
     .setattr    = ntfs3_setattr,
     .getattr    = ntfs_getattr,
     .listxattr    = ntfs_listxattr,
-    .get_inode_acl    = ntfs_get_acl,
+    .get_acl    = ntfs_get_acl,
     .set_acl    = ntfs_set_acl,
 };

diff --git a/fs/ntfs3/ntfs_fs.h b/fs/ntfs3/ntfs_fs.h
index 26957dbfe471..b7782107ce8a 100644
--- a/fs/ntfs3/ntfs_fs.h
+++ b/fs/ntfs3/ntfs_fs.h
@@ -855,7 +855,8 @@ unsigned long ntfs_names_hash(const u16 *name,
size_t len, const u16 *upcase,

 /* globals from xattr.c */
 #ifdef CONFIG_NTFS3_FS_POSIX_ACL
-struct posix_acl *ntfs_get_acl(struct inode *inode, int type, bool rcu);
+struct posix_acl *ntfs_get_acl(struct user_namespace *mnt_userns,
+         struct dentry *dentry, int type);
 int ntfs_set_acl(struct user_namespace *mnt_userns, struct dentry *dentry,
          struct posix_acl *acl, int type);
 int ntfs_init_acl(struct user_namespace *mnt_userns, struct inode *inode,
diff --git a/fs/ntfs3/xattr.c b/fs/ntfs3/xattr.c
index e7a66225361d..95c479d7ebba 100644
--- a/fs/ntfs3/xattr.c
+++ b/fs/ntfs3/xattr.c
@@ -520,9 +520,14 @@ static noinline int ntfs_set_ea(struct inode
*inode, const char *name,
 }

 #ifdef CONFIG_NTFS3_FS_POSIX_ACL
-static struct posix_acl *ntfs_get_acl_ex(struct inode *inode, int type,
-                     int locked)
+
+/*
+ * ntfs_get_acl - inode_operations::get_acl
+ */
+struct posix_acl *ntfs_get_acl(struct user_namespace *mnt_userns,
+                   struct dentry *dentry, int type)
 {
+    struct inode *inode = d_inode(dentry);
     struct ntfs_inode *ni = ntfs_i(inode);
     const char *name;
     size_t name_len;
@@ -545,13 +550,11 @@ static struct posix_acl *ntfs_get_acl_ex(struct
inode *inode, int type,
         name_len = sizeof(XATTR_NAME_POSIX_ACL_DEFAULT) - 1;
     }

-    if (!locked)
-        ni_lock(ni);
+    ni_lock(ni);

     err = ntfs_get_ea(inode, name, name_len, buf, PATH_MAX, &req);

-    if (!locked)
-        ni_unlock(ni);
+    ni_unlock(ni);

     /* Translate extended attribute to acl. */
     if (err >= 0) {
@@ -570,17 +573,6 @@ static struct posix_acl *ntfs_get_acl_ex(struct
inode *inode, int type,
     return acl;
 }

-/*
- * ntfs_get_acl - inode_operations::get_acl
- */
-struct posix_acl *ntfs_get_acl(struct inode *inode, int type, bool rcu)
-{
-    if (rcu)
-        return ERR_PTR(-ECHILD);
-
-    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,
                     int type, bool init_acl)
--
2.34.1