Blame view
fs/ext4/xattr_user.c
1.57 KB
ac27a0ec1 [PATCH] ext4: ini... |
1 |
/* |
617ba13b3 [PATCH] ext4: ren... |
2 |
* linux/fs/ext4/xattr_user.c |
ac27a0ec1 [PATCH] ext4: ini... |
3 4 5 6 |
* Handler for extended user attributes. * * Copyright (C) 2001 by Andreas Gruenbacher, <a.gruenbacher@computer.org> */ |
ac27a0ec1 [PATCH] ext4: ini... |
7 8 |
#include <linux/string.h> #include <linux/fs.h> |
3dcf54515 ext4: move header... |
9 10 |
#include "ext4_jbd2.h" #include "ext4.h" |
ac27a0ec1 [PATCH] ext4: ini... |
11 |
#include "xattr.h" |
ac27a0ec1 [PATCH] ext4: ini... |
12 |
static size_t |
431547b3c sanitize xattr ha... |
13 14 |
ext4_xattr_user_list(struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len, int type) |
ac27a0ec1 [PATCH] ext4: ini... |
15 |
{ |
3537576a7 ext4: remove doub... |
16 |
const size_t prefix_len = XATTR_USER_PREFIX_LEN; |
ac27a0ec1 [PATCH] ext4: ini... |
17 |
const size_t total_len = prefix_len + name_len + 1; |
431547b3c sanitize xattr ha... |
18 |
if (!test_opt(dentry->d_sb, XATTR_USER)) |
ac27a0ec1 [PATCH] ext4: ini... |
19 20 21 22 23 24 25 26 27 28 29 |
return 0; if (list && total_len <= list_size) { memcpy(list, XATTR_USER_PREFIX, prefix_len); memcpy(list+prefix_len, name, name_len); list[prefix_len + name_len] = '\0'; } return total_len; } static int |
431547b3c sanitize xattr ha... |
30 31 |
ext4_xattr_user_get(struct dentry *dentry, const char *name, void *buffer, size_t size, int type) |
ac27a0ec1 [PATCH] ext4: ini... |
32 33 34 |
{ if (strcmp(name, "") == 0) return -EINVAL; |
431547b3c sanitize xattr ha... |
35 |
if (!test_opt(dentry->d_sb, XATTR_USER)) |
ac27a0ec1 [PATCH] ext4: ini... |
36 |
return -EOPNOTSUPP; |
431547b3c sanitize xattr ha... |
37 38 |
return ext4_xattr_get(dentry->d_inode, EXT4_XATTR_INDEX_USER, name, buffer, size); |
ac27a0ec1 [PATCH] ext4: ini... |
39 40 41 |
} static int |
431547b3c sanitize xattr ha... |
42 43 |
ext4_xattr_user_set(struct dentry *dentry, const char *name, const void *value, size_t size, int flags, int type) |
ac27a0ec1 [PATCH] ext4: ini... |
44 45 46 |
{ if (strcmp(name, "") == 0) return -EINVAL; |
431547b3c sanitize xattr ha... |
47 |
if (!test_opt(dentry->d_sb, XATTR_USER)) |
ac27a0ec1 [PATCH] ext4: ini... |
48 |
return -EOPNOTSUPP; |
431547b3c sanitize xattr ha... |
49 50 |
return ext4_xattr_set(dentry->d_inode, EXT4_XATTR_INDEX_USER, name, value, size, flags); |
ac27a0ec1 [PATCH] ext4: ini... |
51 |
} |
11e275280 ext4: constify xa... |
52 |
const struct xattr_handler ext4_xattr_user_handler = { |
ac27a0ec1 [PATCH] ext4: ini... |
53 |
.prefix = XATTR_USER_PREFIX, |
617ba13b3 [PATCH] ext4: ren... |
54 55 56 |
.list = ext4_xattr_user_list, .get = ext4_xattr_user_get, .set = ext4_xattr_user_set, |
ac27a0ec1 [PATCH] ext4: ini... |
57 |
}; |