/* 
 | 
 * Copyright (C) 2008 IBM Corporation 
 | 
 * Author: Mimi Zohar <zohar@us.ibm.com> 
 | 
 * 
 | 
 * This program is free software; you can redistribute it and/or modify 
 | 
 * it under the terms of the GNU General Public License as published by 
 | 
 * the Free Software Foundation, version 2 of the License. 
 | 
 */ 
 | 
  
 | 
#ifndef _LINUX_IMA_H 
 | 
#define _LINUX_IMA_H 
 | 
  
 | 
#include <linux/fs.h> 
 | 
#include <linux/security.h> 
 | 
#include <linux/kexec.h> 
 | 
struct linux_binprm; 
 | 
  
 | 
#ifdef CONFIG_IMA 
 | 
extern int ima_bprm_check(struct linux_binprm *bprm); 
 | 
extern int ima_file_check(struct file *file, int mask); 
 | 
extern void ima_file_free(struct file *file); 
 | 
extern int ima_file_mmap(struct file *file, unsigned long prot); 
 | 
extern int ima_load_data(enum kernel_load_data_id id); 
 | 
extern int ima_read_file(struct file *file, enum kernel_read_file_id id); 
 | 
extern int ima_post_read_file(struct file *file, void *buf, loff_t size, 
 | 
                  enum kernel_read_file_id id); 
 | 
extern void ima_post_path_mknod(struct dentry *dentry); 
 | 
  
 | 
#ifdef CONFIG_IMA_KEXEC 
 | 
extern void ima_add_kexec_buffer(struct kimage *image); 
 | 
#endif 
 | 
  
 | 
#else 
 | 
static inline int ima_bprm_check(struct linux_binprm *bprm) 
 | 
{ 
 | 
    return 0; 
 | 
} 
 | 
  
 | 
static inline int ima_file_check(struct file *file, int mask) 
 | 
{ 
 | 
    return 0; 
 | 
} 
 | 
  
 | 
static inline void ima_file_free(struct file *file) 
 | 
{ 
 | 
    return; 
 | 
} 
 | 
  
 | 
static inline int ima_file_mmap(struct file *file, unsigned long prot) 
 | 
{ 
 | 
    return 0; 
 | 
} 
 | 
  
 | 
static inline int ima_load_data(enum kernel_load_data_id id) 
 | 
{ 
 | 
    return 0; 
 | 
} 
 | 
  
 | 
static inline int ima_read_file(struct file *file, enum kernel_read_file_id id) 
 | 
{ 
 | 
    return 0; 
 | 
} 
 | 
  
 | 
static inline int ima_post_read_file(struct file *file, void *buf, loff_t size, 
 | 
                     enum kernel_read_file_id id) 
 | 
{ 
 | 
    return 0; 
 | 
} 
 | 
  
 | 
static inline void ima_post_path_mknod(struct dentry *dentry) 
 | 
{ 
 | 
    return; 
 | 
} 
 | 
  
 | 
#endif /* CONFIG_IMA */ 
 | 
  
 | 
#ifndef CONFIG_IMA_KEXEC 
 | 
struct kimage; 
 | 
  
 | 
static inline void ima_add_kexec_buffer(struct kimage *image) 
 | 
{} 
 | 
#endif 
 | 
  
 | 
#ifdef CONFIG_IMA_APPRAISE 
 | 
extern bool is_ima_appraise_enabled(void); 
 | 
extern void ima_inode_post_setattr(struct dentry *dentry); 
 | 
extern int ima_inode_setxattr(struct dentry *dentry, const char *xattr_name, 
 | 
               const void *xattr_value, size_t xattr_value_len); 
 | 
extern int ima_inode_removexattr(struct dentry *dentry, const char *xattr_name); 
 | 
#else 
 | 
static inline bool is_ima_appraise_enabled(void) 
 | 
{ 
 | 
    return 0; 
 | 
} 
 | 
  
 | 
static inline void ima_inode_post_setattr(struct dentry *dentry) 
 | 
{ 
 | 
    return; 
 | 
} 
 | 
  
 | 
static inline int ima_inode_setxattr(struct dentry *dentry, 
 | 
                     const char *xattr_name, 
 | 
                     const void *xattr_value, 
 | 
                     size_t xattr_value_len) 
 | 
{ 
 | 
    return 0; 
 | 
} 
 | 
  
 | 
static inline int ima_inode_removexattr(struct dentry *dentry, 
 | 
                    const char *xattr_name) 
 | 
{ 
 | 
    return 0; 
 | 
} 
 | 
#endif /* CONFIG_IMA_APPRAISE */ 
 | 
#endif /* _LINUX_IMA_H */ 
 |