linux/include/linux/evm.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   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>
  13#include <linux/xattr.h>
  14
  15struct integrity_iint_cache;
  16
  17#ifdef CONFIG_EVM
  18extern int evm_set_key(void *key, size_t keylen);
  19extern enum integrity_status evm_verifyxattr(struct dentry *dentry,
  20                                             const char *xattr_name,
  21                                             void *xattr_value,
  22                                             size_t xattr_value_len,
  23                                             struct integrity_iint_cache *iint);
  24extern int evm_inode_setattr(struct dentry *dentry, struct iattr *attr);
  25extern void evm_inode_post_setattr(struct dentry *dentry, int ia_valid);
  26extern 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);
  33extern void evm_inode_post_removexattr(struct dentry *dentry,
  34                                       const char *xattr_name);
  35extern int evm_inode_init_security(struct inode *inode,
  36                                   const struct xattr *xattr_array,
  37                                   struct xattr *evm);
  38#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
  46#else
  47
  48static inline int evm_set_key(void *key, size_t keylen)
  49{
  50        return -EOPNOTSUPP;
  51}
  52
  53#ifdef CONFIG_INTEGRITY
  54static inline enum integrity_status evm_verifyxattr(struct dentry *dentry,
  55                                                    const char *xattr_name,
  56                                                    void *xattr_value,
  57                                                    size_t xattr_value_len,
  58                                        struct integrity_iint_cache *iint)
  59{
  60        return INTEGRITY_UNKNOWN;
  61}
  62#endif
  63
  64static inline int evm_inode_setattr(struct dentry *dentry, struct iattr *attr)
  65{
  66        return 0;
  67}
  68
  69static inline void evm_inode_post_setattr(struct dentry *dentry, int ia_valid)
  70{
  71        return;
  72}
  73
  74static 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}
  93
  94static inline void evm_inode_post_removexattr(struct dentry *dentry,
  95                                              const char *xattr_name)
  96{
  97        return;
  98}
  99
 100static inline int evm_inode_init_security(struct inode *inode,
 101                                          const struct xattr *xattr_array,
 102                                          struct xattr *evm)
 103{
 104        return 0;
 105}
 106
 107#endif /* CONFIG_EVM */
 108#endif /* LINUX_EVM_H */
 109