lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2f017ba3-78a9-211d-2a61-f8a1c90c3cab@paragon-software.com>
Date:   Wed, 15 Feb 2023 17:38:54 +0400
From:   Konstantin Komarov <almaz.alexandrovich@...agon-software.com>
To:     <ntfs3@...ts.linux.dev>
CC:     Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        <linux-fsdevel@...r.kernel.org>
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 <almaz.alexandrovich@...agon-software.com>
---
  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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ