]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/ceph/xattr.c
Merge tag 'trace-v5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[linux.git] / fs / ceph / xattr.c
index 939eab7aa219d74c652263d4c85c249b7b94898f..cb18ee637cb7b66ee37221ceb9e521c852eec4b1 100644 (file)
@@ -20,7 +20,8 @@ static int __remove_xattr(struct ceph_inode_info *ci,
 
 static bool ceph_is_valid_xattr(const char *name)
 {
-       return !strncmp(name, XATTR_CEPH_PREFIX, XATTR_CEPH_PREFIX_LEN) ||
+       return !strncmp(name, XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN) ||
+              !strncmp(name, XATTR_CEPH_PREFIX, XATTR_CEPH_PREFIX_LEN) ||
               !strncmp(name, XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN) ||
               !strncmp(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN);
 }
@@ -892,7 +893,8 @@ ssize_t __ceph_getxattr(struct inode *inode, const char *name, void *value,
        memcpy(value, xattr->val, xattr->val_len);
 
        if (current->journal_info &&
-           !strncmp(name, XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN))
+           !strncmp(name, XATTR_SECURITY_PREFIX, XATTR_SECURITY_PREFIX_LEN) &&
+           security_ismaclabel(name + XATTR_SECURITY_PREFIX_LEN))
                ci->i_ceph_flags |= CEPH_I_SEC_INITED;
 out:
        spin_unlock(&ci->i_ceph_lock);
@@ -903,11 +905,9 @@ ssize_t ceph_listxattr(struct dentry *dentry, char *names, size_t size)
 {
        struct inode *inode = d_inode(dentry);
        struct ceph_inode_info *ci = ceph_inode(inode);
-       struct ceph_vxattr *vxattrs = ceph_inode_vxattrs(inode);
        bool len_only = (size == 0);
        u32 namelen;
        int err;
-       int i;
 
        spin_lock(&ci->i_ceph_lock);
        dout("listxattr %p ver=%lld index_ver=%lld\n", inode,
@@ -936,33 +936,6 @@ ssize_t ceph_listxattr(struct dentry *dentry, char *names, size_t size)
                names = __copy_xattr_names(ci, names);
                size -= namelen;
        }
-
-
-       /* virtual xattr names, too */
-       if (vxattrs) {
-               for (i = 0; vxattrs[i].name; i++) {
-                       size_t this_len;
-
-                       if (vxattrs[i].flags & VXATTR_FLAG_HIDDEN)
-                               continue;
-                       if (vxattrs[i].exists_cb && !vxattrs[i].exists_cb(ci))
-                               continue;
-
-                       this_len = strlen(vxattrs[i].name) + 1;
-                       namelen += this_len;
-                       if (len_only)
-                               continue;
-
-                       if (this_len > size) {
-                               err = -ERANGE;
-                               goto out;
-                       }
-
-                       memcpy(names, vxattrs[i].name, this_len);
-                       names += this_len;
-                       size -= this_len;
-               }
-       }
        err = namelen;
 out:
        spin_unlock(&ci->i_ceph_lock);
@@ -1293,42 +1266,8 @@ int ceph_security_init_secctx(struct dentry *dentry, umode_t mode,
                ceph_pagelist_release(pagelist);
        return err;
 }
-
-void ceph_security_invalidate_secctx(struct inode *inode)
-{
-       security_inode_invalidate_secctx(inode);
-}
-
-static int ceph_xattr_set_security_label(const struct xattr_handler *handler,
-                                   struct dentry *unused, struct inode *inode,
-                                   const char *key, const void *buf,
-                                   size_t buflen, int flags)
-{
-       if (security_ismaclabel(key)) {
-               const char *name = xattr_full_name(handler, key);
-               return __ceph_setxattr(inode, name, buf, buflen, flags);
-       }
-       return  -EOPNOTSUPP;
-}
-
-static int ceph_xattr_get_security_label(const struct xattr_handler *handler,
-                                   struct dentry *unused, struct inode *inode,
-                                   const char *key, void *buf, size_t buflen)
-{
-       if (security_ismaclabel(key)) {
-               const char *name = xattr_full_name(handler, key);
-               return __ceph_getxattr(inode, name, buf, buflen);
-       }
-       return  -EOPNOTSUPP;
-}
-
-static const struct xattr_handler ceph_security_label_handler = {
-       .prefix = XATTR_SECURITY_PREFIX,
-       .get    = ceph_xattr_get_security_label,
-       .set    = ceph_xattr_set_security_label,
-};
-#endif
-#endif
+#endif /* CONFIG_CEPH_FS_SECURITY_LABEL */
+#endif /* CONFIG_SECURITY */
 
 void ceph_release_acl_sec_ctx(struct ceph_acl_sec_ctx *as_ctx)
 {
@@ -1351,9 +1290,6 @@ const struct xattr_handler *ceph_xattr_handlers[] = {
 #ifdef CONFIG_CEPH_FS_POSIX_ACL
        &posix_acl_access_xattr_handler,
        &posix_acl_default_xattr_handler,
-#endif
-#ifdef CONFIG_CEPH_FS_SECURITY_LABEL
-       &ceph_security_label_handler,
 #endif
        &ceph_other_xattr_handler,
        NULL,