hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/include/linux/xattr.h
....@@ -15,6 +15,7 @@
1515 #include <linux/slab.h>
1616 #include <linux/types.h>
1717 #include <linux/spinlock.h>
18
+#include <linux/mm.h>
1819 #include <uapi/linux/xattr.h>
1920
2021 struct inode;
....@@ -32,10 +33,7 @@
3233 bool (*list)(struct dentry *dentry);
3334 int (*get)(const struct xattr_handler *handler, struct dentry *dentry,
3435 struct inode *inode, const char *name, void *buffer,
35
- size_t size);
36
- int (*__get)(const struct xattr_handler *handler, struct dentry *dentry,
37
- struct inode *inode, const char *name, void *buffer,
38
- size_t size);
36
+ size_t size, int flags);
3937 int (*set)(const struct xattr_handler *handler, struct dentry *dentry,
4038 struct inode *inode, const char *name, const void *buffer,
4139 size_t size, int flags);
....@@ -49,7 +47,8 @@
4947 size_t value_len;
5048 };
5149
52
-ssize_t __vfs_getxattr(struct dentry *, struct inode *, const char *, void *, size_t);
50
+ssize_t __vfs_getxattr(struct dentry *dentry, struct inode *inode,
51
+ const char *name, void *buffer, size_t size, int flags);
5352 ssize_t vfs_getxattr(struct dentry *, const char *, void *, size_t);
5453 ssize_t vfs_listxattr(struct dentry *d, char *list, size_t size);
5554 int __vfs_setxattr(struct dentry *, struct inode *, const char *, const void *, size_t, int);
....@@ -63,6 +62,8 @@
6362 ssize_t generic_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size);
6463 ssize_t vfs_getxattr_alloc(struct dentry *dentry, const char *name,
6564 char **xattr_value, size_t size, gfp_t flags);
65
+
66
+int xattr_supported_namespace(struct inode *inode, const char *prefix);
6667
6768 static inline const char *xattr_prefix(const struct xattr_handler *handler)
6869 {
....@@ -78,7 +79,7 @@
7879 struct list_head list;
7980 char *name;
8081 size_t size;
81
- char value[0];
82
+ char value[];
8283 };
8384
8485 /*
....@@ -99,7 +100,7 @@
99100
100101 list_for_each_entry_safe(xattr, node, &xattrs->head, list) {
101102 kfree(xattr->name);
102
- kfree(xattr);
103
+ kvfree(xattr);
103104 }
104105 }
105106
....@@ -107,7 +108,8 @@
107108 int simple_xattr_get(struct simple_xattrs *xattrs, const char *name,
108109 void *buffer, size_t size);
109110 int simple_xattr_set(struct simple_xattrs *xattrs, const char *name,
110
- const void *value, size_t size, int flags);
111
+ const void *value, size_t size, int flags,
112
+ ssize_t *removed_size);
111113 ssize_t simple_xattr_list(struct inode *inode, struct simple_xattrs *xattrs, char *buffer,
112114 size_t size);
113115 void simple_xattr_list_add(struct simple_xattrs *xattrs,