2006-09-01 03:02:42 +04:00
# include <linux/init.h>
# include <linux/types.h>
# include <linux/audit.h>
# include <asm/unistd.h>
static unsigned dir_class [ ] = {
# include <asm-generic/audit_dir_write.h>
~ 0U
} ;
2006-09-01 03:05:56 +04:00
static unsigned read_class [ ] = {
# include <asm-generic/audit_read.h>
~ 0U
} ;
static unsigned write_class [ ] = {
# include <asm-generic/audit_write.h>
~ 0U
} ;
2006-09-01 03:02:42 +04:00
static unsigned chattr_class [ ] = {
# include <asm-generic/audit_change_attr.h>
~ 0U
} ;
2007-03-30 02:00:37 +04:00
static unsigned signal_class [ ] = {
# include <asm-generic/audit_signal.h>
~ 0U
} ;
2007-03-30 02:01:04 +04:00
int audit_classify_arch ( int arch )
{
# ifdef CONFIG_PPC64
if ( arch = = AUDIT_ARCH_PPC )
return 1 ;
# endif
return 0 ;
}
2006-09-01 03:26:40 +04:00
int audit_classify_syscall ( int abi , unsigned syscall )
{
# ifdef CONFIG_PPC64
extern int ppc32_classify_syscall ( unsigned ) ;
if ( abi = = AUDIT_ARCH_PPC )
return ppc32_classify_syscall ( syscall ) ;
# endif
switch ( syscall ) {
case __NR_open :
return 2 ;
case __NR_openat :
return 3 ;
case __NR_socketcall :
return 4 ;
case __NR_execve :
return 5 ;
default :
return 0 ;
}
}
2006-09-01 03:02:42 +04:00
static int __init audit_classes_init ( void )
{
# ifdef CONFIG_PPC64
extern __u32 ppc32_dir_class [ ] ;
2006-09-01 03:05:56 +04:00
extern __u32 ppc32_write_class [ ] ;
extern __u32 ppc32_read_class [ ] ;
2006-09-01 03:02:42 +04:00
extern __u32 ppc32_chattr_class [ ] ;
2007-03-30 02:00:37 +04:00
extern __u32 ppc32_signal_class [ ] ;
2006-09-01 03:05:56 +04:00
audit_register_class ( AUDIT_CLASS_WRITE_32 , ppc32_write_class ) ;
audit_register_class ( AUDIT_CLASS_READ_32 , ppc32_read_class ) ;
2006-09-01 03:02:42 +04:00
audit_register_class ( AUDIT_CLASS_DIR_WRITE_32 , ppc32_dir_class ) ;
audit_register_class ( AUDIT_CLASS_CHATTR_32 , ppc32_chattr_class ) ;
2007-03-30 02:00:37 +04:00
audit_register_class ( AUDIT_CLASS_SIGNAL_32 , ppc32_signal_class ) ;
2006-09-01 03:02:42 +04:00
# endif
2006-09-01 03:05:56 +04:00
audit_register_class ( AUDIT_CLASS_WRITE , write_class ) ;
audit_register_class ( AUDIT_CLASS_READ , read_class ) ;
2006-09-01 03:02:42 +04:00
audit_register_class ( AUDIT_CLASS_DIR_WRITE , dir_class ) ;
audit_register_class ( AUDIT_CLASS_CHATTR , chattr_class ) ;
2007-03-30 02:00:37 +04:00
audit_register_class ( AUDIT_CLASS_SIGNAL , signal_class ) ;
2006-09-01 03:02:42 +04:00
return 0 ;
}
__initcall ( audit_classes_init ) ;