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