Branch data Line data Source code
1 : : // SPDX-License-Identifier: GPL-2.0
2 : : /*
3 : : * linux/fs/ext4/xattr_security.c
4 : : * Handler for storing security labels as extended attributes.
5 : : */
6 : :
7 : : #include <linux/string.h>
8 : : #include <linux/fs.h>
9 : : #include <linux/security.h>
10 : : #include <linux/slab.h>
11 : : #include "ext4_jbd2.h"
12 : : #include "ext4.h"
13 : : #include "xattr.h"
14 : :
15 : : static int
16 : 853902 : ext4_xattr_security_get(const struct xattr_handler *handler,
17 : : struct dentry *unused, struct inode *inode,
18 : : const char *name, void *buffer, size_t size)
19 : : {
20 : 853902 : return ext4_xattr_get(inode, EXT4_XATTR_INDEX_SECURITY,
21 : : name, buffer, size);
22 : : }
23 : :
24 : : static int
25 : 0 : ext4_xattr_security_set(const struct xattr_handler *handler,
26 : : struct dentry *unused, struct inode *inode,
27 : : const char *name, const void *value,
28 : : size_t size, int flags)
29 : : {
30 : 0 : return ext4_xattr_set(inode, EXT4_XATTR_INDEX_SECURITY,
31 : : name, value, size, flags);
32 : : }
33 : :
34 : : static int
35 : 0 : ext4_initxattrs(struct inode *inode, const struct xattr *xattr_array,
36 : : void *fs_info)
37 : : {
38 : : const struct xattr *xattr;
39 : : handle_t *handle = fs_info;
40 : : int err = 0;
41 : :
42 [ # # ]: 0 : for (xattr = xattr_array; xattr->name != NULL; xattr++) {
43 : 0 : err = ext4_xattr_set_handle(handle, inode,
44 : : EXT4_XATTR_INDEX_SECURITY,
45 : 0 : xattr->name, xattr->value,
46 : : xattr->value_len, XATTR_CREATE);
47 [ # # ]: 0 : if (err < 0)
48 : : break;
49 : : }
50 : 0 : return err;
51 : : }
52 : :
53 : : int
54 : 285462 : ext4_init_security(handle_t *handle, struct inode *inode, struct inode *dir,
55 : : const struct qstr *qstr)
56 : : {
57 : 285462 : return security_inode_init_security(inode, dir, qstr,
58 : : &ext4_initxattrs, handle);
59 : : }
60 : :
61 : : const struct xattr_handler ext4_xattr_security_handler = {
62 : : .prefix = XATTR_SECURITY_PREFIX,
63 : : .get = ext4_xattr_security_get,
64 : : .set = ext4_xattr_security_set,
65 : : };
|