blob: 6d4e89b020c541216bf5b0e51d44e739e0d13e47 [file] [log] [blame]
Mimi Zohar3e1be522011-03-09 14:38:26 -05001/*
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>
Mimi Zoharcb7231802011-03-09 14:40:44 -050012#include <linux/xattr.h>
Mimi Zohar3e1be522011-03-09 14:38:26 -050013
Dmitry Kasatkin2960e6c2011-05-06 11:34:13 +030014struct integrity_iint_cache;
15
Mimi Zohar3e1be522011-03-09 14:38:26 -050016#ifdef CONFIG_EVM
17extern enum integrity_status evm_verifyxattr(struct dentry *dentry,
18 const char *xattr_name,
19 void *xattr_value,
Dmitry Kasatkin2960e6c2011-05-06 11:34:13 +030020 size_t xattr_value_len,
21 struct integrity_iint_cache *iint);
Mimi Zohar975d2942011-03-09 14:39:57 -050022extern void evm_inode_post_setattr(struct dentry *dentry, int ia_valid);
Mimi Zohar3e1be522011-03-09 14:38:26 -050023extern int evm_inode_setxattr(struct dentry *dentry, const char *name,
24 const void *value, size_t size);
25extern void evm_inode_post_setxattr(struct dentry *dentry,
26 const char *xattr_name,
27 const void *xattr_value,
28 size_t xattr_value_len);
29extern int evm_inode_removexattr(struct dentry *dentry, const char *xattr_name);
Mimi Zoharc7b87de2011-03-09 14:39:18 -050030extern void evm_inode_post_removexattr(struct dentry *dentry,
31 const char *xattr_name);
Mimi Zoharcb7231802011-03-09 14:40:44 -050032extern int evm_inode_init_security(struct inode *inode,
33 const struct xattr *xattr_array,
34 struct xattr *evm);
Mimi Zohar3e1be522011-03-09 14:38:26 -050035#else
36#ifdef CONFIG_INTEGRITY
37static inline enum integrity_status evm_verifyxattr(struct dentry *dentry,
38 const char *xattr_name,
39 void *xattr_value,
Dmitry Kasatkin2960e6c2011-05-06 11:34:13 +030040 size_t xattr_value_len,
41 struct integrity_iint_cache *iint)
Mimi Zohar3e1be522011-03-09 14:38:26 -050042{
43 return INTEGRITY_UNKNOWN;
44}
45#endif
46
Mimi Zohar975d2942011-03-09 14:39:57 -050047static inline void evm_inode_post_setattr(struct dentry *dentry, int ia_valid)
48{
49 return;
50}
51
Mimi Zohar3e1be522011-03-09 14:38:26 -050052static inline int evm_inode_setxattr(struct dentry *dentry, const char *name,
53 const void *value, size_t size)
54{
55 return 0;
56}
57
58static inline void evm_inode_post_setxattr(struct dentry *dentry,
59 const char *xattr_name,
60 const void *xattr_value,
61 size_t xattr_value_len)
62{
63 return;
64}
65
66static inline int evm_inode_removexattr(struct dentry *dentry,
67 const char *xattr_name)
68{
69 return 0;
70}
Mimi Zoharc7b87de2011-03-09 14:39:18 -050071
72static inline void evm_inode_post_removexattr(struct dentry *dentry,
73 const char *xattr_name)
74{
75 return;
76}
77
Mimi Zoharcb7231802011-03-09 14:40:44 -050078static inline int evm_inode_init_security(struct inode *inode,
79 const struct xattr *xattr_array,
80 struct xattr *evm)
81{
82 return -EOPNOTSUPP;
83}
84
Mimi Zohar3e1be522011-03-09 14:38:26 -050085#endif /* CONFIG_EVM_H */
86#endif /* LINUX_EVM_H */