1 /*
2  * Copyright (C) 2009 IBM Corporation
3  * Author: Mimi Zohar <zohar@us.ibm.com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, version 2 of the License.
8  */
9 
10 #ifndef _LINUX_INTEGRITY_H
11 #define _LINUX_INTEGRITY_H
12 
13 #include <linux/fs.h>
14 
15 enum integrity_status {
16 	INTEGRITY_PASS = 0,
17 	INTEGRITY_PASS_IMMUTABLE,
18 	INTEGRITY_FAIL,
19 	INTEGRITY_NOLABEL,
20 	INTEGRITY_NOXATTRS,
21 	INTEGRITY_UNKNOWN,
22 };
23 
24 /* List of EVM protected security xattrs */
25 #ifdef CONFIG_INTEGRITY
26 extern struct integrity_iint_cache *integrity_inode_get(struct inode *inode);
27 extern void integrity_inode_free(struct inode *inode);
28 extern void __init integrity_load_keys(void);
29 
30 #else
31 static inline struct integrity_iint_cache *
integrity_inode_get(struct inode * inode)32 				integrity_inode_get(struct inode *inode)
33 {
34 	return NULL;
35 }
36 
integrity_inode_free(struct inode * inode)37 static inline void integrity_inode_free(struct inode *inode)
38 {
39 	return;
40 }
41 
integrity_load_keys(void)42 static inline void integrity_load_keys(void)
43 {
44 }
45 #endif /* CONFIG_INTEGRITY */
46 
47 #ifdef CONFIG_INTEGRITY_ASYMMETRIC_KEYS
48 
49 extern int integrity_kernel_module_request(char *kmod_name);
50 
51 #else
52 
integrity_kernel_module_request(char * kmod_name)53 static inline int integrity_kernel_module_request(char *kmod_name)
54 {
55 	return 0;
56 }
57 
58 #endif /* CONFIG_INTEGRITY_ASYMMETRIC_KEYS */
59 
60 #endif /* _LINUX_INTEGRITY_H */
61