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