linux/include/linux/evm.h
<<
>>
Prefs
   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
  14struct integrity_iint_cache;
  15
  16#ifdef CONFIG_EVM
  17extern int evm_set_key(void *key, size_t keylen);
  18extern enum integrity_status evm_verifyxattr(struct dentry *dentry,
  19                                             const char *xattr_name,
  20                                             void *xattr_value,
  21                                             size_t xattr_value_len,
  22                                             struct integrity_iint_cache *iint);
  23extern int evm_inode_setattr(struct dentry *dentry, struct iattr *attr);
  24extern void evm_inode_post_setattr(struct dentry *dentry, int ia_valid);
  25extern int evm_inode_setxattr(struct dentry *dentry, const char *name,
  26                              const void *value, size_t size);
  27extern void evm_inode_post_setxattr(struct dentry *dentry,
  28                                    const char *xattr_name,
  29                                    const void *xattr_value,
  30                                    size_t xattr_value_len);
  31extern int evm_inode_removexattr(struct dentry *dentry, const char *xattr_name);
  32extern void evm_inode_post_removexattr(struct dentry *dentry,
  33                                       const char *xattr_name);
  34extern int evm_inode_init_security(struct inode *inode,
  35                                   const struct xattr *xattr_array,
  36                                   struct xattr *evm);
  37#ifdef CONFIG_FS_POSIX_ACL
  38extern int posix_xattr_acl(const char *xattrname);
  39#else
  40static inline int posix_xattr_acl(const char *xattrname)
  41{
  42        return 0;
  43}
  44#endif
  45#else
  46
  47static inline int evm_set_key(void *key, size_t keylen)
  48{
  49        return -EOPNOTSUPP;
  50}
  51
  52#ifdef CONFIG_INTEGRITY
  53static inline enum integrity_status evm_verifyxattr(struct dentry *dentry,
  54                                                    const char *xattr_name,
  55                                                    void *xattr_value,
  56                                                    size_t xattr_value_len,
  57                                        struct integrity_iint_cache *iint)
  58{
  59        return INTEGRITY_UNKNOWN;
  60}
  61#endif
  62
  63static inline int evm_inode_setattr(struct dentry *dentry, struct iattr *attr)
  64{
  65        return 0;
  66}
  67
  68static inline void evm_inode_post_setattr(struct dentry *dentry, int ia_valid)
  69{
  70        return;
  71}
  72
  73static inline int evm_inode_setxattr(struct dentry *dentry, const char *name,
  74                                     const void *value, size_t size)
  75{
  76        return 0;
  77}
  78
  79static inline void evm_inode_post_setxattr(struct dentry *dentry,
  80                                           const char *xattr_name,
  81                                           const void *xattr_value,
  82                                           size_t xattr_value_len)
  83{
  84        return;
  85}
  86
  87static inline int evm_inode_removexattr(struct dentry *dentry,
  88                                        const char *xattr_name)
  89{
  90        return 0;
  91}
  92
  93static inline void evm_inode_post_removexattr(struct dentry *dentry,
  94                                              const char *xattr_name)
  95{
  96        return;
  97}
  98
  99static inline int evm_inode_init_security(struct inode *inode,
 100                                          const struct xattr *xattr_array,
 101                                          struct xattr *evm)
 102{
 103        return 0;
 104}
 105
 106#endif /* CONFIG_EVM */
 107#endif /* LINUX_EVM_H */
 108