xattr_handler: pass dentry and inode as separate arguments of ->get()
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 11 Apr 2016 00:48:24 +0000 (20:48 -0400)
committerJaehoon Chung <jh80.chung@samsung.com>
Tue, 29 Jan 2019 02:25:41 +0000 (11:25 +0900)
commit b296821a7c42fa58baa17513b2b7b30ae66f3336 upstream.

... and do not assume they are already attached to each other

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
[sw0312.kim: backport from mainline to apply getxattr inode separation]
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Change-Id: Ic3f9c370f13ceacda25d20bb7d5b6d732966e648

28 files changed:
fs/9p/acl.c
fs/9p/xattr.c
fs/ext2/xattr_security.c
fs/ext2/xattr_trusted.c
fs/ext2/xattr_user.c
fs/ext4/xattr_security.c
fs/ext4/xattr_trusted.c
fs/ext4/xattr_user.c
fs/f2fs/xattr.c
fs/gfs2/xattr.c
fs/hfsplus/xattr.c
fs/hfsplus/xattr.h
fs/hfsplus/xattr_security.c
fs/hfsplus/xattr_trusted.c
fs/hfsplus/xattr_user.c
fs/jffs2/security.c
fs/jffs2/xattr_trusted.c
fs/jffs2/xattr_user.c
fs/nfs/nfs4proc.c
fs/ocfs2/xattr.c
fs/posix_acl.c
fs/reiserfs/xattr_security.c
fs/reiserfs/xattr_trusted.c
fs/reiserfs/xattr_user.c
fs/squashfs/xattr.c
fs/xattr.c
fs/xfs/xfs_xattr.c
include/linux/xattr.h

index c30c6ceac2c43363701ccbb3a7b8c0660fd69850..1ccf8d6db1e8ee5971c2678dfc708e6c16f1a1ad 100644 (file)
@@ -213,8 +213,8 @@ int v9fs_acl_mode(struct inode *dir, umode_t *modep,
 }
 
 static int v9fs_xattr_get_acl(const struct xattr_handler *handler,
-                             struct dentry *dentry, const char *name,
-                             void *buffer, size_t size)
+                             struct dentry *dentry, struct inode *inode,
+                             const char *name, void *buffer, size_t size)
 {
        struct v9fs_session_info *v9ses;
        struct posix_acl *acl;
@@ -230,7 +230,7 @@ static int v9fs_xattr_get_acl(const struct xattr_handler *handler,
        if ((v9ses->flags & V9FS_ACCESS_MASK) != V9FS_ACCESS_CLIENT)
                return v9fs_xattr_get(dentry, handler->prefix, buffer, size);
 
-       acl = v9fs_get_cached_acl(d_inode(dentry), handler->flags);
+       acl = v9fs_get_cached_acl(inode, handler->flags);
        if (IS_ERR(acl))
                return PTR_ERR(acl);
        if (acl == NULL)
index f35168ce426b8cba2ba108c8b8247dd924d0ba24..d61915dd7290f54f3c9c9dfb554283288066bd92 100644 (file)
@@ -140,8 +140,8 @@ ssize_t v9fs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size)
 }
 
 static int v9fs_xattr_handler_get(const struct xattr_handler *handler,
-                                 struct dentry *dentry, const char *name,
-                                 void *buffer, size_t size)
+                                 struct dentry *dentry, struct inode *inode,
+                                 const char *name, void *buffer, size_t size)
 {
        const char *full_name = xattr_full_name(handler, name);
 
index dfb08750370d85d71a7fc89bef68345229b7740d..b478e822438638c5319740e57e8b497c73d48699 100644 (file)
@@ -25,12 +25,12 @@ ext2_xattr_security_list(const struct xattr_handler *handler,
 
 static int
 ext2_xattr_security_get(const struct xattr_handler *handler,
-                       struct dentry *dentry, const char *name,
-                       void *buffer, size_t size)
+                       struct dentry *unused, struct inode *inode,
+                       const char *name, void *buffer, size_t size)
 {
        if (strcmp(name, "") == 0)
                return -EINVAL;
-       return ext2_xattr_get(d_inode(dentry), EXT2_XATTR_INDEX_SECURITY, name,
+       return ext2_xattr_get(inode, EXT2_XATTR_INDEX_SECURITY, name,
                              buffer, size);
 }
 
index 3150dd3a78595084d0a6bfd5916f86272e68303a..4d8e63e5f8ddcd63d55cc043c043dfb0edcbc674 100644 (file)
@@ -29,12 +29,12 @@ ext2_xattr_trusted_list(const struct xattr_handler *handler,
 
 static int
 ext2_xattr_trusted_get(const struct xattr_handler *handler,
-                      struct dentry *dentry, const char *name,
-                      void *buffer, size_t size)
+                      struct dentry *unused, struct inode *inode,
+                      const char *name, void *buffer, size_t size)
 {
        if (strcmp(name, "") == 0)
                return -EINVAL;
-       return ext2_xattr_get(d_inode(dentry), EXT2_XATTR_INDEX_TRUSTED, name,
+       return ext2_xattr_get(inode, EXT2_XATTR_INDEX_TRUSTED, name,
                              buffer, size);
 }
 
index 339a49bbb8efbee752138fc600399c712d1b98a7..8c7aad0a3d6cb9e2d019e6e92e5af1c6a80c23b8 100644 (file)
@@ -31,14 +31,14 @@ ext2_xattr_user_list(const struct xattr_handler *handler,
 
 static int
 ext2_xattr_user_get(const struct xattr_handler *handler,
-                   struct dentry *dentry, const char *name,
-                   void *buffer, size_t size)
+                   struct dentry *unused, struct inode *inode,
+                   const char *name, void *buffer, size_t size)
 {
        if (strcmp(name, "") == 0)
                return -EINVAL;
-       if (!test_opt(dentry->d_sb, XATTR_USER))
+       if (!test_opt(inode->i_sb, XATTR_USER))
                return -EOPNOTSUPP;
-       return ext2_xattr_get(d_inode(dentry), EXT2_XATTR_INDEX_USER,
+       return ext2_xattr_get(inode, EXT2_XATTR_INDEX_USER,
                              name, buffer, size);
 }
 
index 36f4c1a84c218307a1ae5c7e5c9805747025cf38..362bc4b7643b86bc3aeae43a4f64c4ebf25f0868 100644 (file)
@@ -30,12 +30,12 @@ ext4_xattr_security_list(const struct xattr_handler *handler,
 
 static int
 ext4_xattr_security_get(const struct xattr_handler *handler,
-                       struct dentry *dentry, const char *name,
-                       void *buffer, size_t size)
+                       struct dentry *unused, struct inode *inode,
+                       const char *name, void *buffer, size_t size)
 {
        if (strcmp(name, "") == 0)
                return -EINVAL;
-       return ext4_xattr_get(d_inode(dentry), EXT4_XATTR_INDEX_SECURITY,
+       return ext4_xattr_get(inode, EXT4_XATTR_INDEX_SECURITY,
                              name, buffer, size);
 }
 
index 4880890533424ca63e67fc8ce0536254ce669028..667ee47b2fa9cc0a8e70796b0b1868487071b994 100644 (file)
@@ -33,12 +33,12 @@ ext4_xattr_trusted_list(const struct xattr_handler *handler,
 
 static int
 ext4_xattr_trusted_get(const struct xattr_handler *handler,
-                      struct dentry *dentry, const char *name, void *buffer,
-                      size_t size)
+                      struct dentry *unused, struct inode *inode,
+                      const char *name, void *buffer, size_t size)
 {
        if (strcmp(name, "") == 0)
                return -EINVAL;
-       return ext4_xattr_get(d_inode(dentry), EXT4_XATTR_INDEX_TRUSTED,
+       return ext4_xattr_get(inode, EXT4_XATTR_INDEX_TRUSTED,
                              name, buffer, size);
 }
 
index d2dec33640620024aae408cdb394f4689d23dd87..400de4687a583bfc0e6608dd005d61c0b9feb030 100644 (file)
@@ -32,14 +32,14 @@ ext4_xattr_user_list(const struct xattr_handler *handler,
 
 static int
 ext4_xattr_user_get(const struct xattr_handler *handler,
-                   struct dentry *dentry, const char *name,
-                   void *buffer, size_t size)
+                   struct dentry *unused, struct inode *inode,
+                   const char *name, void *buffer, size_t size)
 {
        if (strcmp(name, "") == 0)
                return -EINVAL;
-       if (!test_opt(dentry->d_sb, XATTR_USER))
+       if (!test_opt(inode->i_sb, XATTR_USER))
                return -EOPNOTSUPP;
-       return ext4_xattr_get(d_inode(dentry), EXT4_XATTR_INDEX_USER,
+       return ext4_xattr_get(inode, EXT4_XATTR_INDEX_USER,
                              name, buffer, size);
 }
 
index 862368a32e5354c3d9458f39f933e87d05c3e287..c294d55777f99f5d828d46dafac1bd1c9dda2d4c 100644 (file)
@@ -58,10 +58,10 @@ static size_t f2fs_xattr_generic_list(const struct xattr_handler *handler,
 }
 
 static int f2fs_xattr_generic_get(const struct xattr_handler *handler,
-               struct dentry *dentry, const char *name, void *buffer,
-               size_t size)
+               struct dentry *unused, struct inode *inode,
+               const char *name, void *buffer, size_t size)
 {
-       struct f2fs_sb_info *sbi = F2FS_SB(dentry->d_sb);
+       struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
 
        switch (handler->flags) {
        case F2FS_XATTR_INDEX_USER:
@@ -79,7 +79,7 @@ static int f2fs_xattr_generic_get(const struct xattr_handler *handler,
        }
        if (strcmp(name, "") == 0)
                return -EINVAL;
-       return f2fs_getxattr(d_inode(dentry), handler->flags, name,
+       return f2fs_getxattr(inode, handler->flags, name,
                             buffer, size, NULL);
 }
 
@@ -124,11 +124,9 @@ static size_t f2fs_xattr_advise_list(const struct xattr_handler *handler,
 }
 
 static int f2fs_xattr_advise_get(const struct xattr_handler *handler,
-               struct dentry *dentry, const char *name, void *buffer,
-               size_t size)
+               struct dentry *unused, struct inode *inode,
+               const char *name, void *buffer, size_t size)
 {
-       struct inode *inode = d_inode(dentry);
-
        if (strcmp(name, "") != 0)
                return -EINVAL;
 
index 53ce76a374fe7313314eafd274b8a58db81b52d0..f59e861f57283fc935761ba054b869355724d2d3 100644 (file)
@@ -584,10 +584,10 @@ out:
  * Returns: actual size of data on success, -errno on error
  */
 static int gfs2_xattr_get(const struct xattr_handler *handler,
-                         struct dentry *dentry, const char *name,
-                         void *buffer, size_t size)
+                         struct dentry *unused, struct inode *inode,
+                         const char *name, void *buffer, size_t size)
 {
-       struct gfs2_inode *ip = GFS2_I(d_inode(dentry));
+       struct gfs2_inode *ip = GFS2_I(inode);
        struct gfs2_ea_location el;
        int type = handler->flags;
        int error;
index e41a010cd89ca6ca8e76dec51d2d8914782e1db6..9f76fe0ed68f1d4844a4d3b3a7f1f75105ba971a 100644 (file)
@@ -582,7 +582,7 @@ failed_getxattr_init:
        return res;
 }
 
-ssize_t hfsplus_getxattr(struct dentry *dentry, const char *name,
+ssize_t hfsplus_getxattr(struct inode *inode, const char *name,
                         void *value, size_t size,
                         const char *prefix, size_t prefixlen)
 {
@@ -600,7 +600,7 @@ ssize_t hfsplus_getxattr(struct dentry *dentry, const char *name,
        strcpy(xattr_name, prefix);
        strcpy(xattr_name + prefixlen, name);
 
-       res = __hfsplus_getxattr(d_inode(dentry), xattr_name, value, size);
+       res = __hfsplus_getxattr(inode, xattr_name, value, size);
        kfree(xattr_name);
        return res;
 
@@ -850,8 +850,8 @@ end_removexattr:
 }
 
 static int hfsplus_osx_getxattr(const struct xattr_handler *handler,
-                               struct dentry *dentry, const char *name,
-                               void *buffer, size_t size)
+                               struct dentry *unused, struct inode *inode,
+                               const char *name, void *buffer, size_t size)
 {
        if (!strcmp(name, ""))
                return -EINVAL;
@@ -869,7 +869,7 @@ static int hfsplus_osx_getxattr(const struct xattr_handler *handler,
         * creates), so we pass the name through unmodified (after
         * ensuring it doesn't conflict with another namespace).
         */
-       return __hfsplus_getxattr(d_inode(dentry), name, buffer, size);
+       return __hfsplus_getxattr(inode, name, buffer, size);
 }
 
 static int hfsplus_osx_setxattr(const struct xattr_handler *handler,
index f9b0955b3d281ee93deedf398905bf1c1c64469d..d04ba6f58df284f7a0cd8d4f5d92cceba13bab58 100644 (file)
@@ -28,7 +28,7 @@ int hfsplus_setxattr(struct dentry *dentry, const char *name,
 ssize_t __hfsplus_getxattr(struct inode *inode, const char *name,
                           void *value, size_t size);
 
-ssize_t hfsplus_getxattr(struct dentry *dentry, const char *name,
+ssize_t hfsplus_getxattr(struct inode *inode, const char *name,
                         void *value, size_t size,
                         const char *prefix, size_t prefixlen);
 
index 72a68a3a0c996e1ca73fb2ec462c30f19b56f247..ae2ca8c2e3353428adb4b2fe09c43c470a736f81 100644 (file)
 #include "acl.h"
 
 static int hfsplus_security_getxattr(const struct xattr_handler *handler,
-                                    struct dentry *dentry, const char *name,
-                                    void *buffer, size_t size)
+                                    struct dentry *unused, struct inode *inode,
+                                    const char *name, void *buffer, size_t size)
 {
-       return hfsplus_getxattr(dentry, name, buffer, size,
+       return hfsplus_getxattr(inode, name, buffer, size,
                                XATTR_SECURITY_PREFIX,
                                XATTR_SECURITY_PREFIX_LEN);
 }
index 95a7704c7abb7b82358d5516c366ead6091d4fda..eae2947060aa1892f425dd4eb2377d035a9e06b2 100644 (file)
 #include "xattr.h"
 
 static int hfsplus_trusted_getxattr(const struct xattr_handler *handler,
-                                   struct dentry *dentry, const char *name,
-                                   void *buffer, size_t size)
+                                   struct dentry *unused, struct inode *inode,
+                                   const char *name, void *buffer, size_t size)
 {
-       return hfsplus_getxattr(dentry, name, buffer, size,
+       return hfsplus_getxattr(inode, name, buffer, size,
                                XATTR_TRUSTED_PREFIX,
                                XATTR_TRUSTED_PREFIX_LEN);
 }
index 6fc269baf959a34bb9889b2be5c8a0711e895c94..3c9eec3e4c7befa138983c4bcec755308ebf1b1d 100644 (file)
 #include "xattr.h"
 
 static int hfsplus_user_getxattr(const struct xattr_handler *handler,
-                                struct dentry *dentry, const char *name,
-                                void *buffer, size_t size)
+                                struct dentry *unused, struct inode *inode,
+                                const char *name, void *buffer, size_t size)
 {
 
-       return hfsplus_getxattr(dentry, name, buffer, size,
+       return hfsplus_getxattr(inode, name, buffer, size,
                                XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN);
 }
 
index bf12fe5f83d7e66fa1cf34883539126f12cadfe0..ee0c2651513a7833aadebdeca5af60937c715069 100644 (file)
@@ -49,13 +49,13 @@ int jffs2_init_security(struct inode *inode, struct inode *dir,
 
 /* ---- XATTR Handler for "security.*" ----------------- */
 static int jffs2_security_getxattr(const struct xattr_handler *handler,
-                                  struct dentry *dentry, const char *name,
-                                  void *buffer, size_t size)
+                                  struct dentry *unused, struct inode *inode,
+                                  const char *name, void *buffer, size_t size)
 {
        if (!strcmp(name, ""))
                return -EINVAL;
 
-       return do_jffs2_getxattr(d_inode(dentry), JFFS2_XPREFIX_SECURITY,
+       return do_jffs2_getxattr(inode, JFFS2_XPREFIX_SECURITY,
                                 name, buffer, size);
 }
 
index a562da0d6a26186dc2116d6b8a05795903a46897..1f406acea950038f8e0ce6e8f7093bf4fae66e05 100644 (file)
 #include "nodelist.h"
 
 static int jffs2_trusted_getxattr(const struct xattr_handler *handler,
-                                 struct dentry *dentry, const char *name,
-                                 void *buffer, size_t size)
+                                 struct dentry *unused, struct inode *inode,
+                                 const char *name, void *buffer, size_t size)
 {
        if (!strcmp(name, ""))
                return -EINVAL;
-       return do_jffs2_getxattr(d_inode(dentry), JFFS2_XPREFIX_TRUSTED,
+       return do_jffs2_getxattr(inode, JFFS2_XPREFIX_TRUSTED,
                                 name, buffer, size);
 }
 
index cbc0472e59a8b01b81ea142f35d29c88c3a12c00..0d6962efcfddbca459eee4a86258982a86042fdc 100644 (file)
 #include "nodelist.h"
 
 static int jffs2_user_getxattr(const struct xattr_handler *handler,
-                              struct dentry *dentry, const char *name,
-                              void *buffer, size_t size)
+                              struct dentry *unused, struct inode *inode,
+                              const char *name, void *buffer, size_t size)
 {
        if (!strcmp(name, ""))
                return -EINVAL;
-       return do_jffs2_getxattr(d_inode(dentry), JFFS2_XPREFIX_USER,
+       return do_jffs2_getxattr(inode, JFFS2_XPREFIX_USER,
                                 name, buffer, size);
 }
 
index 41c8ddbc80dc435d10ef3ebf366e97e66c1d4108..14593ae3cb33c75a5d52fffc015ca34358c3f3e3 100644 (file)
@@ -6258,13 +6258,13 @@ static int nfs4_xattr_set_nfs4_acl(const struct xattr_handler *handler,
 }
 
 static int nfs4_xattr_get_nfs4_acl(const struct xattr_handler *handler,
-                                  struct dentry *dentry, const char *key,
-                                  void *buf, size_t buflen)
+                                  struct dentry *unused, struct inode *inode,
+                                  const char *key, void *buf, size_t buflen)
 {
        if (strcmp(key, "") != 0)
                return -EINVAL;
 
-       return nfs4_proc_get_acl(d_inode(dentry), buf, buflen);
+       return nfs4_proc_get_acl(inode, buf, buflen);
 }
 
 static size_t nfs4_xattr_list_nfs4_acl(const struct xattr_handler *handler,
@@ -6300,11 +6300,11 @@ static int nfs4_xattr_set_nfs4_label(const struct xattr_handler *handler,
 }
 
 static int nfs4_xattr_get_nfs4_label(const struct xattr_handler *handler,
-                                    struct dentry *dentry, const char *key,
-                                    void *buf, size_t buflen)
+                                    struct dentry *unused, struct inode *inode,
+                                    const char *key, void *buf, size_t buflen)
 {
        if (security_ismaclabel(key))
-               return nfs4_get_security_label(d_inode(dentry), buf, buflen);
+               return nfs4_get_security_label(inode, buf, buflen);
        return -EOPNOTSUPP;
 }
 
index 4f0788232f2f9c461bcce5b81db8f4071b5e0fdd..b78b2d7239f68fb04dc40b2ea0d228e2b0265f3a 100644 (file)
@@ -7244,12 +7244,12 @@ static size_t ocfs2_xattr_security_list(const struct xattr_handler *handler,
 }
 
 static int ocfs2_xattr_security_get(const struct xattr_handler *handler,
-                                   struct dentry *dentry, const char *name,
-                                   void *buffer, size_t size)
+                                   struct dentry *unused, struct inode *inode,
+                                   const char *name, void *buffer, size_t size)
 {
        if (strcmp(name, "") == 0)
                return -EINVAL;
-       return ocfs2_xattr_get(d_inode(dentry), OCFS2_XATTR_INDEX_SECURITY,
+       return ocfs2_xattr_get(inode, OCFS2_XATTR_INDEX_SECURITY,
                               name, buffer, size);
 }
 
@@ -7340,12 +7340,12 @@ static size_t ocfs2_xattr_trusted_list(const struct xattr_handler *handler,
 }
 
 static int ocfs2_xattr_trusted_get(const struct xattr_handler *handler,
-                                  struct dentry *dentry, const char *name,
-                                  void *buffer, size_t size)
+                                  struct dentry *unused, struct inode *inode,
+                                  const char *name, void *buffer, size_t size)
 {
        if (strcmp(name, "") == 0)
                return -EINVAL;
-       return ocfs2_xattr_get(d_inode(dentry), OCFS2_XATTR_INDEX_TRUSTED,
+       return ocfs2_xattr_get(inode, OCFS2_XATTR_INDEX_TRUSTED,
                               name, buffer, size);
 }
 
@@ -7391,16 +7391,16 @@ static size_t ocfs2_xattr_user_list(const struct xattr_handler *handler,
 }
 
 static int ocfs2_xattr_user_get(const struct xattr_handler *handler,
-                               struct dentry *dentry, const char *name,
-                               void *buffer, size_t size)
+                               struct dentry *unusde, struct inode *inode,
+                               const char *name, void *buffer, size_t size)
 {
-       struct ocfs2_super *osb = OCFS2_SB(dentry->d_sb);
+       struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
 
        if (strcmp(name, "") == 0)
                return -EINVAL;
        if (osb->s_mount_opt & OCFS2_MOUNT_NOUSERXATTR)
                return -EOPNOTSUPP;
-       return ocfs2_xattr_get(d_inode(dentry), OCFS2_XATTR_INDEX_USER, name,
+       return ocfs2_xattr_get(inode, OCFS2_XATTR_INDEX_USER, name,
                               buffer, size);
 }
 
index 993bb3b5f4d59feed55754855f0262eb251fa633..4cba55b919f57b1f37a26f18b20b4443fddf32a9 100644 (file)
@@ -794,20 +794,20 @@ EXPORT_SYMBOL (posix_acl_to_xattr);
 
 static int
 posix_acl_xattr_get(const struct xattr_handler *handler,
-                   struct dentry *dentry, const char *name,
-                   void *value, size_t size)
+                   struct dentry *unused, struct inode *inode,
+                   const char *name, void *value, size_t size)
 {
        struct posix_acl *acl;
        int error;
 
        if (strcmp(name, "") != 0)
                return -EINVAL;
-       if (!IS_POSIXACL(d_backing_inode(dentry)))
+       if (!IS_POSIXACL(inode))
                return -EOPNOTSUPP;
-       if (d_is_symlink(dentry))
+       if (S_ISLNK(inode->i_mode))
                return -EOPNOTSUPP;
 
-       acl = get_acl(d_backing_inode(dentry), handler->flags);
+       acl = get_acl(inode, handler->flags);
        if (IS_ERR(acl))
                return PTR_ERR(acl);
        if (acl == NULL)
index 60de069225ba33a087f02de406eda2725a159e8e..365a9f9ebd0932f2168d0b2a441531de59d7b698 100644 (file)
@@ -9,14 +9,13 @@
 #include <linux/uaccess.h>
 
 static int
-security_get(const struct xattr_handler *handler, struct dentry *dentry,
-            const char *name, void *buffer, size_t size)
+security_get(const struct xattr_handler *handler, struct dentry *unused,
+            struct inode *inode, const char *name, void *buffer, size_t size)
 {
-       if (IS_PRIVATE(d_inode(dentry)))
+       if (IS_PRIVATE(inode))
                return -EPERM;
 
-       return reiserfs_xattr_get(d_inode(dentry),
-                                 xattr_full_name(handler, name),
+       return reiserfs_xattr_get(inode, xattr_full_name(handler, name),
                                  buffer, size);
 }
 
index ebba1ebf28addb36a1ee3c3d30feab5c7199cc27..6d2cc21c3a540c7a5e966a72f8f6ba4e1ba7e969 100644 (file)
@@ -8,14 +8,13 @@
 #include <linux/uaccess.h>
 
 static int
-trusted_get(const struct xattr_handler *handler, struct dentry *dentry,
-           const char *name, void *buffer, size_t size)
+trusted_get(const struct xattr_handler *handler, struct dentry *unused,
+           struct inode *inode, const char *name, void *buffer, size_t size)
 {
-       if (!capable(CAP_SYS_ADMIN) || IS_PRIVATE(d_inode(dentry)))
+       if (!capable(CAP_SYS_ADMIN) || IS_PRIVATE(inode))
                return -EPERM;
 
-       return reiserfs_xattr_get(d_inode(dentry),
-                                 xattr_full_name(handler, name),
+       return reiserfs_xattr_get(inode, xattr_full_name(handler, name),
                                  buffer, size);
 }
 
index 6ac8a8c8bd9cd1052055c1269006c4a62ccbc9cc..267808fcbaa823d7c070b1cdb34e58be986274f5 100644 (file)
@@ -7,13 +7,12 @@
 #include <linux/uaccess.h>
 
 static int
-user_get(const struct xattr_handler *handler, struct dentry *dentry,
-        const char *name, void *buffer, size_t size)
+user_get(const struct xattr_handler *handler, struct dentry *unused,
+        struct inode *inode, const char *name, void *buffer, size_t size)
 {
-       if (!reiserfs_xattrs_user(dentry->d_sb))
+       if (!reiserfs_xattrs_user(inode->i_sb))
                return -EOPNOTSUPP;
-       return reiserfs_xattr_get(d_inode(dentry),
-                                 xattr_full_name(handler, name),
+       return reiserfs_xattr_get(inode, xattr_full_name(handler, name),
                                  buffer, size);
 }
 
index 6a4cc344085c0a9ecb3ce4106b168172739dd161..b13a6b811a8b43887c792ac282f6ba89d9fcb219 100644 (file)
@@ -225,13 +225,15 @@ static size_t squashfs_xattr_handler_list(const struct xattr_handler *handler,
 }
 
 static int squashfs_xattr_handler_get(const struct xattr_handler *handler,
-                                     struct dentry *d, const char *name,
+                                     struct dentry *unused,
+                                     struct inode *inode,
+                                     const char *name,
                                      void *buffer, size_t size)
 {
        if (name[0] == '\0')
                return  -EINVAL;
 
-       return squashfs_xattr_get(d_inode(d), handler->flags, name,
+       return squashfs_xattr_get(inode, handler->flags, name,
                buffer, size);
 }
 
index 09441c396798d8c190db3e0c65d4886fadbe7565..f3a02287d29801ed58df75601712d4c4e7c25cdb 100644 (file)
@@ -720,7 +720,8 @@ generic_getxattr(struct dentry *dentry, const char *name, void *buffer, size_t s
        handler = xattr_resolve_name(dentry->d_sb->s_xattr, &name);
        if (!handler)
                return -EOPNOTSUPP;
-       return handler->get(handler, dentry, name, buffer, size);
+       return handler->get(handler, dentry, d_inode(dentry),
+                           name, buffer, size);
 }
 
 /*
index 9beaf192b4bb6aee050a786db6bd888332cfc86f..fd707bec1a386a2e9b7b9d6fa43401fefa014a50 100644 (file)
 
 
 static int
-xfs_xattr_get(const struct xattr_handler *handler, struct dentry *dentry,
-               const char *name, void *value, size_t size)
+xfs_xattr_get(const struct xattr_handler *handler, struct dentry *unused,
+               struct inode *inode, const char *name, void *value, size_t size)
 {
        int xflags = handler->flags;
-       struct xfs_inode *ip = XFS_I(d_inode(dentry));
+       struct xfs_inode *ip = XFS_I(inode);
        int error, asize = size;
 
        if (strcmp(name, "") == 0)
index 89474b9d260cf44151b21e26ce5d64aecf62b6cb..e79e7c95182c74aa49f10e8193c7665cb5c5d1fe 100644 (file)
@@ -26,7 +26,8 @@ struct xattr_handler {
                       char *list, size_t list_size, const char *name,
                       size_t name_len);
        int (*get)(const struct xattr_handler *, struct dentry *dentry,
-                  const char *name, void *buffer, size_t size);
+                  struct inode *inode, const char *name, void *buffer,
+                  size_t size);
        int (*set)(const struct xattr_handler *, struct dentry *dentry,
                   const char *name, const void *buffer, size_t size,
                   int flags);