Line data Source code
1 : /* SPDX-License-Identifier: GPL-2.0 */
2 : /*
3 : * evm.h
4 : *
5 : * Copyright (c) 2009 IBM Corporation
6 : * Author: Mimi Zohar <zohar@us.ibm.com>
7 : */
8 :
9 : #ifndef _LINUX_EVM_H
10 : #define _LINUX_EVM_H
11 :
12 : #include <linux/integrity.h>
13 : #include <linux/xattr.h>
14 :
15 : struct integrity_iint_cache;
16 :
17 : #ifdef CONFIG_EVM
18 : extern int evm_set_key(void *key, size_t keylen);
19 : extern enum integrity_status evm_verifyxattr(struct dentry *dentry,
20 : const char *xattr_name,
21 : void *xattr_value,
22 : size_t xattr_value_len,
23 : struct integrity_iint_cache *iint);
24 : extern int evm_inode_setattr(struct dentry *dentry, struct iattr *attr);
25 : extern void evm_inode_post_setattr(struct dentry *dentry, int ia_valid);
26 : extern int evm_inode_setxattr(struct dentry *dentry, const char *name,
27 : const void *value, size_t size);
28 : extern void evm_inode_post_setxattr(struct dentry *dentry,
29 : const char *xattr_name,
30 : const void *xattr_value,
31 : size_t xattr_value_len);
32 : extern int evm_inode_removexattr(struct dentry *dentry, const char *xattr_name);
33 : extern void evm_inode_post_removexattr(struct dentry *dentry,
34 : const char *xattr_name);
35 : extern int evm_inode_init_security(struct inode *inode,
36 : const struct xattr *xattr_array,
37 : struct xattr *evm);
38 : #ifdef CONFIG_FS_POSIX_ACL
39 : extern int posix_xattr_acl(const char *xattrname);
40 : #else
41 : static inline int posix_xattr_acl(const char *xattrname)
42 : {
43 : return 0;
44 : }
45 : #endif
46 : #else
47 :
48 : static inline int evm_set_key(void *key, size_t keylen)
49 : {
50 : return -EOPNOTSUPP;
51 : }
52 :
53 : #ifdef CONFIG_INTEGRITY
54 : static inline enum integrity_status evm_verifyxattr(struct dentry *dentry,
55 : const char *xattr_name,
56 : void *xattr_value,
57 : size_t xattr_value_len,
58 : struct integrity_iint_cache *iint)
59 : {
60 : return INTEGRITY_UNKNOWN;
61 : }
62 : #endif
63 :
64 : static inline int evm_inode_setattr(struct dentry *dentry, struct iattr *attr)
65 : {
66 : return 0;
67 : }
68 :
69 1100 : static inline void evm_inode_post_setattr(struct dentry *dentry, int ia_valid)
70 : {
71 : return;
72 : }
73 :
74 : static inline int evm_inode_setxattr(struct dentry *dentry, const char *name,
75 : const void *value, size_t size)
76 : {
77 : return 0;
78 : }
79 :
80 : static inline void evm_inode_post_setxattr(struct dentry *dentry,
81 : const char *xattr_name,
82 : const void *xattr_value,
83 : size_t xattr_value_len)
84 : {
85 : return;
86 : }
87 :
88 : static inline int evm_inode_removexattr(struct dentry *dentry,
89 : const char *xattr_name)
90 : {
91 : return 0;
92 : }
93 :
94 2 : static inline void evm_inode_post_removexattr(struct dentry *dentry,
95 : const char *xattr_name)
96 : {
97 2 : return;
98 : }
99 :
100 0 : static inline int evm_inode_init_security(struct inode *inode,
101 : const struct xattr *xattr_array,
102 : struct xattr *evm)
103 : {
104 0 : return 0;
105 : }
106 :
107 : #endif /* CONFIG_EVM */
108 : #endif /* LINUX_EVM_H */
|