return 0;
}
+#ifndef HAVE_USER_NAMESPACE_ARG
+#define ll_xattr_set_common(hd, ns, de, inode, name, value, size, flags) \
+ ll_xattr_set_common(hd, de, inode, name, value, size, flags)
+#endif
+
static int ll_xattr_set_common(const struct xattr_handler *handler,
+ struct user_namespace *mnt_userns,
struct dentry *dentry, struct inode *inode,
const char *name, const void *value, size_t size,
int flags)
if ((handler->flags == XATTR_ACL_ACCESS_T ||
handler->flags == XATTR_ACL_DEFAULT_T) &&
- !inode_owner_or_capable(inode))
+ !inode_owner_or_capable(mnt_userns, inode))
RETURN(-EPERM);
/* b10667: ignore lustre special xattr for now */
return rc;
}
+#ifndef HAVE_USER_NAMESPACE_ARG
+#define ll_xattr_set(hd, ns, de, inode, name, value, size, flags) \
+ ll_xattr_set(hd, de, inode, name, value, size, flags)
+#endif
+
static int ll_xattr_set(const struct xattr_handler *handler,
+ struct user_namespace *mnt_userns,
struct dentry *dentry, struct inode *inode,
const char *name, const void *value, size_t size,
int flags)
le32_to_cpu(LOV_MAGIC_MASK)) == le32_to_cpu(LOV_MAGIC_MAGIC))
lustre_swab_lov_user_md((struct lov_user_md *)value, 0);
- return ll_xattr_set_common(handler, dentry, inode, name, value, size,
- flags);
+ return ll_xattr_set_common(handler, mnt_userns, dentry, inode, name,
+ value, size, flags);
}
int ll_xattr_list(struct inode *inode, const char *name, int type, void *buffer,
size, flags);
}
-#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM)
+#elif !defined(HAVE_USER_NAMESPACE_ARG) && \
+!defined(HAVE_XATTR_HANDLER_INODE_PARAM)
const struct xattr_handler *get_xattr_handler(int handler_flag)
{
int i = 0;
if (!handler)
return -ENXIO;
- return ll_xattr_set_common(handler, dentry, dentry->d_inode, name,
+ return ll_xattr_set_common(handler, NULL, dentry, dentry->d_inode, name,
value, size, flags);
}
if (!handler)
return -ENXIO;
- return ll_xattr_set(handler, dentry, dentry->d_inode, name, value,
+ return ll_xattr_set(handler, NULL, dentry, dentry->d_inode, name, value,
size, flags);
}
#endif
#if defined(HAVE_XATTR_HANDLER_SIMPLIFIED)
.get = ll_xattr_get_common_4_3,
.set = ll_xattr_set_common_4_3,
-#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM)
+#elif !defined(HAVE_USER_NAMESPACE_ARG) && \
+!defined(HAVE_XATTR_HANDLER_INODE_PARAM)
.get = ll_xattr_get_common_3_11,
.set = ll_xattr_set_common_3_11,
#else
#if defined(HAVE_XATTR_HANDLER_SIMPLIFIED)
.get = ll_xattr_get_4_3,
.set = ll_xattr_set_4_3,
-#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM)
+#elif !defined(HAVE_USER_NAMESPACE_ARG) && \
+!defined(HAVE_XATTR_HANDLER_INODE_PARAM)
.get = ll_xattr_get_3_11,
.set = ll_xattr_set_3_11,
#else
#if defined(HAVE_XATTR_HANDLER_SIMPLIFIED)
.get = ll_xattr_get_common_4_3,
.set = ll_xattr_set_common_4_3,
-#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM)
+#elif !defined(HAVE_USER_NAMESPACE_ARG) && \
+!defined(HAVE_XATTR_HANDLER_INODE_PARAM)
.get = ll_xattr_get_common_3_11,
.set = ll_xattr_set_common_3_11,
#else
#if defined(HAVE_XATTR_HANDLER_SIMPLIFIED)
.get = ll_xattr_get_common_4_3,
.set = ll_xattr_set_common_4_3,
-#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM)
+#elif !defined(HAVE_USER_NAMESPACE_ARG) && \
+!defined(HAVE_XATTR_HANDLER_INODE_PARAM)
.get = ll_xattr_get_common_3_11,
.set = ll_xattr_set_common_3_11,
#else
#if defined(HAVE_XATTR_HANDLER_SIMPLIFIED)
.get = ll_xattr_get_common_4_3,
.set = ll_xattr_set_common_4_3,
-#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM)
+#elif !defined(HAVE_USER_NAMESPACE_ARG) && \
+!defined(HAVE_XATTR_HANDLER_INODE_PARAM)
.get = ll_xattr_get_common_3_11,
.set = ll_xattr_set_common_3_11,
#else
#if defined(HAVE_XATTR_HANDLER_SIMPLIFIED)
.get = ll_xattr_get_4_3,
.set = ll_xattr_set_4_3,
-#elif !defined(HAVE_XATTR_HANDLER_INODE_PARAM)
+#elif !defined(HAVE_USER_NAMESPACE_ARG) && \
+!defined(HAVE_XATTR_HANDLER_INODE_PARAM)
.get = ll_xattr_get_3_11,
.set = ll_xattr_set_3_11,
#else