blob: 8302bc29bb358abca818d7b16ba0e1170b8924d6 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Mimi Zohar3e1be522011-03-09 14:38:26 -05002/*
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>
Mimi Zoharcb7231802011-03-09 14:40:44 -050013#include <linux/xattr.h>
Mimi Zohar3e1be522011-03-09 14:38:26 -050014
Dmitry Kasatkin2960e6c2011-05-06 11:34:13 +030015struct integrity_iint_cache;
16
Mimi Zohar3e1be522011-03-09 14:38:26 -050017#ifdef CONFIG_EVM
Dmitry Kasatkin76266762015-10-22 21:26:32 +030018extern int evm_set_key(void *key, size_t keylen);
Mimi Zohar3e1be522011-03-09 14:38:26 -050019extern enum integrity_status evm_verifyxattr(struct dentry *dentry,
20 const char *xattr_name,
21 void *xattr_value,
Dmitry Kasatkin2960e6c2011-05-06 11:34:13 +030022 size_t xattr_value_len,
23 struct integrity_iint_cache *iint);
Mimi Zohar817b54a2011-05-13 12:53:38 -040024extern int evm_inode_setattr(struct dentry *dentry, struct iattr *attr);
Mimi Zohar975d2942011-03-09 14:39:57 -050025extern void evm_inode_post_setattr(struct dentry *dentry, int ia_valid);
Mimi Zohar3e1be522011-03-09 14:38:26 -050026extern int evm_inode_setxattr(struct dentry *dentry, const char *name,
27 const void *value, size_t size);
28extern void evm_inode_post_setxattr(struct dentry *dentry,
29 const char *xattr_name,
30 const void *xattr_value,
31 size_t xattr_value_len);
32extern int evm_inode_removexattr(struct dentry *dentry, const char *xattr_name);
Mimi Zoharc7b87de2011-03-09 14:39:18 -050033extern void evm_inode_post_removexattr(struct dentry *dentry,
34 const char *xattr_name);
Mimi Zoharcb7231802011-03-09 14:40:44 -050035extern int evm_inode_init_security(struct inode *inode,
36 const struct xattr *xattr_array,
37 struct xattr *evm);
Mimi Zoharbf6d0f52011-08-18 18:07:44 -040038#ifdef CONFIG_FS_POSIX_ACL
39extern int posix_xattr_acl(const char *xattrname);
40#else
41static inline int posix_xattr_acl(const char *xattrname)
42{
43 return 0;
44}
45#endif
Mimi Zohar3e1be522011-03-09 14:38:26 -050046#else
Dmitry Kasatkin76266762015-10-22 21:26:32 +030047
48static inline int evm_set_key(void *key, size_t keylen)
49{
50 return -EOPNOTSUPP;
51}
52
Mimi Zohar3e1be522011-03-09 14:38:26 -050053#ifdef CONFIG_INTEGRITY
54static inline enum integrity_status evm_verifyxattr(struct dentry *dentry,
55 const char *xattr_name,
56 void *xattr_value,
Dmitry Kasatkin2960e6c2011-05-06 11:34:13 +030057 size_t xattr_value_len,
58 struct integrity_iint_cache *iint)
Mimi Zohar3e1be522011-03-09 14:38:26 -050059{
60 return INTEGRITY_UNKNOWN;
61}
62#endif
63
Mimi Zohare1c9b232011-08-11 00:22:51 -040064static inline int evm_inode_setattr(struct dentry *dentry, struct iattr *attr)
Mimi Zohar817b54a2011-05-13 12:53:38 -040065{
66 return 0;
67}
68
Mimi Zohar975d2942011-03-09 14:39:57 -050069static inline void evm_inode_post_setattr(struct dentry *dentry, int ia_valid)
70{
71 return;
72}
73
Mimi Zohar3e1be522011-03-09 14:38:26 -050074static inline int evm_inode_setxattr(struct dentry *dentry, const char *name,
75 const void *value, size_t size)
76{
77 return 0;
78}
79
80static 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
88static inline int evm_inode_removexattr(struct dentry *dentry,
89 const char *xattr_name)
90{
91 return 0;
92}
Mimi Zoharc7b87de2011-03-09 14:39:18 -050093
94static inline void evm_inode_post_removexattr(struct dentry *dentry,
95 const char *xattr_name)
96{
97 return;
98}
99
Mimi Zoharcb7231802011-03-09 14:40:44 -0500100static inline int evm_inode_init_security(struct inode *inode,
101 const struct xattr *xattr_array,
102 struct xattr *evm)
103{
Mimi Zohar5a4730b2011-08-11 00:22:52 -0400104 return 0;
Mimi Zoharcb7231802011-03-09 14:40:44 -0500105}
106
Paul Bollee05a4f42013-03-25 21:12:27 +0100107#endif /* CONFIG_EVM */
Mimi Zohar3e1be522011-03-09 14:38:26 -0500108#endif /* LINUX_EVM_H */