2006-09-12 10:59:45 +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
} ;
static unsigned read_class [ ] = {
# include <asm-generic/audit_read.h>
~ 0U
} ;
static unsigned write_class [ ] = {
# include <asm-generic/audit_write.h>
~ 0U
} ;
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 )
{
2008-04-26 14:17:12 +04:00
# ifdef CONFIG_COMPAT
2007-03-30 02:01:04 +04:00
if ( arch = = AUDIT_ARCH_SPARC )
return 1 ;
# endif
return 0 ;
}
2006-09-12 10:59:45 +04:00
int audit_classify_syscall ( int abi , unsigned syscall )
{
2008-04-26 14:17:12 +04:00
# ifdef CONFIG_COMPAT
2006-09-12 10:59:45 +04:00
extern int sparc32_classify_syscall ( unsigned ) ;
if ( abi = = AUDIT_ARCH_SPARC )
return sparc32_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 ;
}
}
static int __init audit_classes_init ( void )
{
2008-04-26 14:17:12 +04:00
# ifdef CONFIG_COMPAT
2006-09-12 10:59:45 +04:00
extern __u32 sparc32_dir_class [ ] ;
extern __u32 sparc32_write_class [ ] ;
extern __u32 sparc32_read_class [ ] ;
extern __u32 sparc32_chattr_class [ ] ;
2007-03-30 02:00:37 +04:00
extern __u32 sparc32_signal_class [ ] ;
2006-09-12 10:59:45 +04:00
audit_register_class ( AUDIT_CLASS_WRITE_32 , sparc32_write_class ) ;
audit_register_class ( AUDIT_CLASS_READ_32 , sparc32_read_class ) ;
audit_register_class ( AUDIT_CLASS_DIR_WRITE_32 , sparc32_dir_class ) ;
audit_register_class ( AUDIT_CLASS_CHATTR_32 , sparc32_chattr_class ) ;
2007-03-30 02:00:37 +04:00
audit_register_class ( AUDIT_CLASS_SIGNAL_32 , sparc32_signal_class ) ;
2006-09-12 10:59:45 +04:00
# endif
audit_register_class ( AUDIT_CLASS_WRITE , write_class ) ;
audit_register_class ( AUDIT_CLASS_READ , read_class ) ;
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-12 10:59:45 +04:00
return 0 ;
}
__initcall ( audit_classes_init ) ;