]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - fs/xattr.c
PCI / PM: Always check PME wakeup capability for runtime wakeup support
[mirror_ubuntu-artful-kernel.git] / fs / xattr.c
index e10cd6bb6d73433f8a99171e6d279c35cbbd65f3..3c0e19b443b67c1b0aed68817abf493299770159 100644 (file)
@@ -250,7 +250,7 @@ xattr_getsecurity(struct inode *inode, const char *name, void *value,
        }
        memcpy(value, buffer, len);
 out:
-       security_release_secctx(buffer, len);
+       kfree(buffer);
 out_noalloc:
        return len;
 }
@@ -297,6 +297,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
        *xattr_value = value;
        return error;
 }
+EXPORT_SYMBOL_GPL(vfs_getxattr_alloc);
 
 ssize_t
 __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
@@ -464,6 +465,12 @@ setxattr(struct dentry *d, const char __user *name, const void __user *value,
                if ((strcmp(kname, XATTR_NAME_POSIX_ACL_ACCESS) == 0) ||
                    (strcmp(kname, XATTR_NAME_POSIX_ACL_DEFAULT) == 0))
                        posix_acl_fix_xattr_from_user(kvalue, size);
+               else if (strcmp(kname, XATTR_NAME_CAPS) == 0) {
+                       error = cap_convert_nscap(d, &kvalue, size);
+                       if (error < 0)
+                               goto out;
+                       size = error;
+               }
        }
 
        error = vfs_setxattr(d, kname, kvalue, size, flags);