switch xattr_handler->set() to passing dentry and inode separately
[deliverable/linux.git] / fs / xattr.c
index b11945e15fde2b62d59c5c81c5aead48fb0e5d83..b16d078897000e0c82737efbdf98aa8e55b6fbd6 100644 (file)
@@ -655,6 +655,7 @@ strcmp_prefix(const char *a, const char *a_prefix)
  * operations to the correct xattr_handler.
  */
 #define for_each_xattr_handler(handlers, handler)              \
+       if (handlers)                                           \
                for ((handler) = *(handlers)++;                 \
                        (handler) != NULL;                      \
                        (handler) = *(handlers)++)
@@ -668,7 +669,7 @@ xattr_resolve_name(const struct xattr_handler **handlers, const char **name)
        const struct xattr_handler *handler;
 
        if (!*name)
-               return NULL;
+               return ERR_PTR(-EINVAL);
 
        for_each_xattr_handler(handlers, handler) {
                const char *n;
@@ -753,7 +754,8 @@ generic_setxattr(struct dentry *dentry, const char *name, const void *value, siz
        handler = xattr_resolve_name(dentry->d_sb->s_xattr, &name);
        if (IS_ERR(handler))
                return PTR_ERR(handler);
-       return handler->set(handler, dentry, name, value, size, flags);
+       return handler->set(handler, dentry, d_inode(dentry), name, value,
+                           size, flags);
 }
 
 /*
@@ -768,7 +770,8 @@ generic_removexattr(struct dentry *dentry, const char *name)
        handler = xattr_resolve_name(dentry->d_sb->s_xattr, &name);
        if (IS_ERR(handler))
                return PTR_ERR(handler);
-       return handler->set(handler, dentry, name, NULL, 0, XATTR_REPLACE);
+       return handler->set(handler, dentry, d_inode(dentry), name, NULL,
+                           0, XATTR_REPLACE);
 }
 
 EXPORT_SYMBOL(generic_getxattr);
This page took 0.03165 seconds and 5 git commands to generate.