forked from amir73il/linux
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[PATCH] sparc64 audit syscall classes hookup
... that should do it for all targets; the only remaining issues are mips (currently treated as non-biarch) and handling of other OS emulations (OSF/SunOS/Solaris/???). The latter would need to be assigned new AUDIT_ARCH_... ABI numbers anyway... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
- Loading branch information
Al Viro
committed
Sep 12, 2006
1 parent
e65e1fc
commit f6bc0c1
Showing
4 changed files
with
110 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
#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 | ||
}; | ||
|
||
int audit_classify_syscall(int abi, unsigned syscall) | ||
{ | ||
#ifdef CONFIG_SPARC32_COMPAT | ||
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) | ||
{ | ||
#ifdef CONFIG_SPARC32_COMPAT | ||
extern __u32 sparc32_dir_class[]; | ||
extern __u32 sparc32_write_class[]; | ||
extern __u32 sparc32_read_class[]; | ||
extern __u32 sparc32_chattr_class[]; | ||
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); | ||
#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); | ||
return 0; | ||
} | ||
|
||
__initcall(audit_classes_init); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
#include <asm-sparc/unistd.h> | ||
|
||
unsigned sparc32_dir_class[] = { | ||
#include <asm-generic/audit_dir_write.h> | ||
~0U | ||
}; | ||
|
||
unsigned sparc32_chattr_class[] = { | ||
#include <asm-generic/audit_change_attr.h> | ||
~0U | ||
}; | ||
|
||
unsigned sparc32_write_class[] = { | ||
#include <asm-generic/audit_write.h> | ||
~0U | ||
}; | ||
|
||
unsigned sparc32_read_class[] = { | ||
#include <asm-generic/audit_read.h> | ||
~0U | ||
}; | ||
|
||
int sparc32_classify_syscall(unsigned syscall) | ||
{ | ||
switch(syscall) { | ||
case __NR_open: | ||
return 2; | ||
case __NR_openat: | ||
return 3; | ||
case __NR_socketcall: | ||
return 4; | ||
case __NR_execve: | ||
return 5; | ||
default: | ||
return 1; | ||
} | ||
} |