diff options
-rw-r--r-- | arch/i386/kernel/audit.c | 12 | ||||
-rw-r--r-- | arch/ia64/ia32/audit.c | 10 | ||||
-rw-r--r-- | arch/ia64/kernel/audit.c | 16 | ||||
-rw-r--r-- | arch/powerpc/kernel/audit.c | 16 | ||||
-rw-r--r-- | arch/powerpc/kernel/compat_audit.c | 10 | ||||
-rw-r--r-- | arch/s390/kernel/audit.c | 16 | ||||
-rw-r--r-- | arch/s390/kernel/compat_audit.c | 10 | ||||
-rw-r--r-- | arch/x86_64/ia32/audit.c | 10 | ||||
-rw-r--r-- | arch/x86_64/kernel/audit.c | 16 | ||||
-rw-r--r-- | include/asm-generic/audit_read.h | 8 | ||||
-rw-r--r-- | include/asm-generic/audit_write.h | 11 | ||||
-rw-r--r-- | include/linux/audit.h | 4 |
12 files changed, 139 insertions, 0 deletions
diff --git a/arch/i386/kernel/audit.c b/arch/i386/kernel/audit.c index 5a53c6f371f..28bbc46f75c 100644 --- a/arch/i386/kernel/audit.c +++ b/arch/i386/kernel/audit.c | |||
@@ -8,6 +8,16 @@ static unsigned dir_class[] = { | |||
8 | ~0U | 8 | ~0U |
9 | }; | 9 | }; |
10 | 10 | ||
11 | static unsigned read_class[] = { | ||
12 | #include <asm-generic/audit_read.h> | ||
13 | ~0U | ||
14 | }; | ||
15 | |||
16 | static unsigned write_class[] = { | ||
17 | #include <asm-generic/audit_write.h> | ||
18 | ~0U | ||
19 | }; | ||
20 | |||
11 | static unsigned chattr_class[] = { | 21 | static unsigned chattr_class[] = { |
12 | #include <asm-generic/audit_change_attr.h> | 22 | #include <asm-generic/audit_change_attr.h> |
13 | ~0U | 23 | ~0U |
@@ -15,6 +25,8 @@ static unsigned chattr_class[] = { | |||
15 | 25 | ||
16 | static int __init audit_classes_init(void) | 26 | static int __init audit_classes_init(void) |
17 | { | 27 | { |
28 | audit_register_class(AUDIT_CLASS_WRITE, write_class); | ||
29 | audit_register_class(AUDIT_CLASS_READ, read_class); | ||
18 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); | 30 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
19 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); | 31 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
20 | return 0; | 32 | return 0; |
diff --git a/arch/ia64/ia32/audit.c b/arch/ia64/ia32/audit.c index ab94f2e58cd..798501994bd 100644 --- a/arch/ia64/ia32/audit.c +++ b/arch/ia64/ia32/audit.c | |||
@@ -9,3 +9,13 @@ unsigned ia32_chattr_class[] = { | |||
9 | #include <asm-generic/audit_change_attr.h> | 9 | #include <asm-generic/audit_change_attr.h> |
10 | ~0U | 10 | ~0U |
11 | }; | 11 | }; |
12 | |||
13 | unsigned ia32_write_class[] = { | ||
14 | #include <asm-generic/audit_write.h> | ||
15 | ~0U | ||
16 | }; | ||
17 | |||
18 | unsigned ia32_read_class[] = { | ||
19 | #include <asm-generic/audit_read.h> | ||
20 | ~0U | ||
21 | }; | ||
diff --git a/arch/ia64/kernel/audit.c b/arch/ia64/kernel/audit.c index f2512931cca..99488cdbf5c 100644 --- a/arch/ia64/kernel/audit.c +++ b/arch/ia64/kernel/audit.c | |||
@@ -8,6 +8,16 @@ static unsigned dir_class[] = { | |||
8 | ~0U | 8 | ~0U |
9 | }; | 9 | }; |
10 | 10 | ||
11 | static unsigned read_class[] = { | ||
12 | #include <asm-generic/audit_read.h> | ||
13 | ~0U | ||
14 | }; | ||
15 | |||
16 | static unsigned write_class[] = { | ||
17 | #include <asm-generic/audit_write.h> | ||
18 | ~0U | ||
19 | }; | ||
20 | |||
11 | static unsigned chattr_class[] = { | 21 | static unsigned chattr_class[] = { |
12 | #include <asm-generic/audit_change_attr.h> | 22 | #include <asm-generic/audit_change_attr.h> |
13 | ~0U | 23 | ~0U |
@@ -17,10 +27,16 @@ static int __init audit_classes_init(void) | |||
17 | { | 27 | { |
18 | #ifdef CONFIG_IA32_SUPPORT | 28 | #ifdef CONFIG_IA32_SUPPORT |
19 | extern __u32 ia32_dir_class[]; | 29 | extern __u32 ia32_dir_class[]; |
30 | extern __u32 ia32_write_class[]; | ||
31 | extern __u32 ia32_read_class[]; | ||
20 | extern __u32 ia32_chattr_class[]; | 32 | extern __u32 ia32_chattr_class[]; |
33 | audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class); | ||
34 | audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class); | ||
21 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); | 35 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); |
22 | audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); | 36 | audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); |
23 | #endif | 37 | #endif |
38 | audit_register_class(AUDIT_CLASS_WRITE, write_class); | ||
39 | audit_register_class(AUDIT_CLASS_READ, read_class); | ||
24 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); | 40 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
25 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); | 41 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
26 | return 0; | 42 | return 0; |
diff --git a/arch/powerpc/kernel/audit.c b/arch/powerpc/kernel/audit.c index caf085a1923..24a65e3724e 100644 --- a/arch/powerpc/kernel/audit.c +++ b/arch/powerpc/kernel/audit.c | |||
@@ -8,6 +8,16 @@ static unsigned dir_class[] = { | |||
8 | ~0U | 8 | ~0U |
9 | }; | 9 | }; |
10 | 10 | ||
11 | static unsigned read_class[] = { | ||
12 | #include <asm-generic/audit_read.h> | ||
13 | ~0U | ||
14 | }; | ||
15 | |||
16 | static unsigned write_class[] = { | ||
17 | #include <asm-generic/audit_write.h> | ||
18 | ~0U | ||
19 | }; | ||
20 | |||
11 | static unsigned chattr_class[] = { | 21 | static unsigned chattr_class[] = { |
12 | #include <asm-generic/audit_change_attr.h> | 22 | #include <asm-generic/audit_change_attr.h> |
13 | ~0U | 23 | ~0U |
@@ -17,10 +27,16 @@ static int __init audit_classes_init(void) | |||
17 | { | 27 | { |
18 | #ifdef CONFIG_PPC64 | 28 | #ifdef CONFIG_PPC64 |
19 | extern __u32 ppc32_dir_class[]; | 29 | extern __u32 ppc32_dir_class[]; |
30 | extern __u32 ppc32_write_class[]; | ||
31 | extern __u32 ppc32_read_class[]; | ||
20 | extern __u32 ppc32_chattr_class[]; | 32 | extern __u32 ppc32_chattr_class[]; |
33 | audit_register_class(AUDIT_CLASS_WRITE_32, ppc32_write_class); | ||
34 | audit_register_class(AUDIT_CLASS_READ_32, ppc32_read_class); | ||
21 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class); | 35 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ppc32_dir_class); |
22 | audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class); | 36 | audit_register_class(AUDIT_CLASS_CHATTR_32, ppc32_chattr_class); |
23 | #endif | 37 | #endif |
38 | audit_register_class(AUDIT_CLASS_WRITE, write_class); | ||
39 | audit_register_class(AUDIT_CLASS_READ, read_class); | ||
24 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); | 40 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
25 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); | 41 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
26 | return 0; | 42 | return 0; |
diff --git a/arch/powerpc/kernel/compat_audit.c b/arch/powerpc/kernel/compat_audit.c index dbbb8b81f1d..ddc0a64896a 100644 --- a/arch/powerpc/kernel/compat_audit.c +++ b/arch/powerpc/kernel/compat_audit.c | |||
@@ -10,3 +10,13 @@ unsigned ppc32_chattr_class[] = { | |||
10 | #include <asm-generic/audit_change_attr.h> | 10 | #include <asm-generic/audit_change_attr.h> |
11 | ~0U | 11 | ~0U |
12 | }; | 12 | }; |
13 | |||
14 | unsigned ppc32_write_class[] = { | ||
15 | #include <asm-generic/audit_write.h> | ||
16 | ~0U | ||
17 | }; | ||
18 | |||
19 | unsigned ppc32_read_class[] = { | ||
20 | #include <asm-generic/audit_read.h> | ||
21 | ~0U | ||
22 | }; | ||
diff --git a/arch/s390/kernel/audit.c b/arch/s390/kernel/audit.c index c26cd6cb231..cde57039334 100644 --- a/arch/s390/kernel/audit.c +++ b/arch/s390/kernel/audit.c | |||
@@ -8,6 +8,16 @@ static unsigned dir_class[] = { | |||
8 | ~0U | 8 | ~0U |
9 | }; | 9 | }; |
10 | 10 | ||
11 | static unsigned read_class[] = { | ||
12 | #include <asm-generic/audit_read.h> | ||
13 | ~0U | ||
14 | }; | ||
15 | |||
16 | static unsigned write_class[] = { | ||
17 | #include <asm-generic/audit_write.h> | ||
18 | ~0U | ||
19 | }; | ||
20 | |||
11 | static unsigned chattr_class[] = { | 21 | static unsigned chattr_class[] = { |
12 | #include <asm-generic/audit_change_attr.h> | 22 | #include <asm-generic/audit_change_attr.h> |
13 | ~0U | 23 | ~0U |
@@ -17,10 +27,16 @@ static int __init audit_classes_init(void) | |||
17 | { | 27 | { |
18 | #ifdef CONFIG_COMPAT | 28 | #ifdef CONFIG_COMPAT |
19 | extern __u32 s390_dir_class[]; | 29 | extern __u32 s390_dir_class[]; |
30 | extern __u32 s390_write_class[]; | ||
31 | extern __u32 s390_read_class[]; | ||
20 | extern __u32 s390_chattr_class[]; | 32 | extern __u32 s390_chattr_class[]; |
33 | audit_register_class(AUDIT_CLASS_WRITE_32, s390_write_class); | ||
34 | audit_register_class(AUDIT_CLASS_READ_32, s390_read_class); | ||
21 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, s390_dir_class); | 35 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, s390_dir_class); |
22 | audit_register_class(AUDIT_CLASS_CHATTR_32, s390_chattr_class); | 36 | audit_register_class(AUDIT_CLASS_CHATTR_32, s390_chattr_class); |
23 | #endif | 37 | #endif |
38 | audit_register_class(AUDIT_CLASS_WRITE, write_class); | ||
39 | audit_register_class(AUDIT_CLASS_READ, read_class); | ||
24 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); | 40 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
25 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); | 41 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
26 | return 0; | 42 | return 0; |
diff --git a/arch/s390/kernel/compat_audit.c b/arch/s390/kernel/compat_audit.c index 1a7d34fecf6..d9e5f3540d4 100644 --- a/arch/s390/kernel/compat_audit.c +++ b/arch/s390/kernel/compat_audit.c | |||
@@ -10,3 +10,13 @@ unsigned s390_chattr_class[] = { | |||
10 | #include <asm-generic/audit_change_attr.h> | 10 | #include <asm-generic/audit_change_attr.h> |
11 | ~0U | 11 | ~0U |
12 | }; | 12 | }; |
13 | |||
14 | unsigned s390_write_class[] = { | ||
15 | #include <asm-generic/audit_write.h> | ||
16 | ~0U | ||
17 | }; | ||
18 | |||
19 | unsigned s390_read_class[] = { | ||
20 | #include <asm-generic/audit_read.h> | ||
21 | ~0U | ||
22 | }; | ||
diff --git a/arch/x86_64/ia32/audit.c b/arch/x86_64/ia32/audit.c index ab94f2e58cd..798501994bd 100644 --- a/arch/x86_64/ia32/audit.c +++ b/arch/x86_64/ia32/audit.c | |||
@@ -9,3 +9,13 @@ unsigned ia32_chattr_class[] = { | |||
9 | #include <asm-generic/audit_change_attr.h> | 9 | #include <asm-generic/audit_change_attr.h> |
10 | ~0U | 10 | ~0U |
11 | }; | 11 | }; |
12 | |||
13 | unsigned ia32_write_class[] = { | ||
14 | #include <asm-generic/audit_write.h> | ||
15 | ~0U | ||
16 | }; | ||
17 | |||
18 | unsigned ia32_read_class[] = { | ||
19 | #include <asm-generic/audit_read.h> | ||
20 | ~0U | ||
21 | }; | ||
diff --git a/arch/x86_64/kernel/audit.c b/arch/x86_64/kernel/audit.c index a067aa468a8..36840acb651 100644 --- a/arch/x86_64/kernel/audit.c +++ b/arch/x86_64/kernel/audit.c | |||
@@ -8,6 +8,16 @@ static unsigned dir_class[] = { | |||
8 | ~0U | 8 | ~0U |
9 | }; | 9 | }; |
10 | 10 | ||
11 | static unsigned read_class[] = { | ||
12 | #include <asm-generic/audit_read.h> | ||
13 | ~0U | ||
14 | }; | ||
15 | |||
16 | static unsigned write_class[] = { | ||
17 | #include <asm-generic/audit_write.h> | ||
18 | ~0U | ||
19 | }; | ||
20 | |||
11 | static unsigned chattr_class[] = { | 21 | static unsigned chattr_class[] = { |
12 | #include <asm-generic/audit_change_attr.h> | 22 | #include <asm-generic/audit_change_attr.h> |
13 | ~0U | 23 | ~0U |
@@ -17,10 +27,16 @@ static int __init audit_classes_init(void) | |||
17 | { | 27 | { |
18 | #ifdef CONFIG_IA32_EMULATION | 28 | #ifdef CONFIG_IA32_EMULATION |
19 | extern __u32 ia32_dir_class[]; | 29 | extern __u32 ia32_dir_class[]; |
30 | extern __u32 ia32_write_class[]; | ||
31 | extern __u32 ia32_read_class[]; | ||
20 | extern __u32 ia32_chattr_class[]; | 32 | extern __u32 ia32_chattr_class[]; |
33 | audit_register_class(AUDIT_CLASS_WRITE_32, ia32_write_class); | ||
34 | audit_register_class(AUDIT_CLASS_READ_32, ia32_read_class); | ||
21 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); | 35 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, ia32_dir_class); |
22 | audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); | 36 | audit_register_class(AUDIT_CLASS_CHATTR_32, ia32_chattr_class); |
23 | #endif | 37 | #endif |
38 | audit_register_class(AUDIT_CLASS_WRITE, write_class); | ||
39 | audit_register_class(AUDIT_CLASS_READ, read_class); | ||
24 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); | 40 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); |
25 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); | 41 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); |
26 | return 0; | 42 | return 0; |
diff --git a/include/asm-generic/audit_read.h b/include/asm-generic/audit_read.h new file mode 100644 index 00000000000..0e87464d984 --- /dev/null +++ b/include/asm-generic/audit_read.h | |||
@@ -0,0 +1,8 @@ | |||
1 | __NR_readlink, | ||
2 | __NR_quotactl, | ||
3 | __NR_listxattr, | ||
4 | __NR_llistxattr, | ||
5 | __NR_flistxattr, | ||
6 | __NR_getxattr, | ||
7 | __NR_lgetxattr, | ||
8 | __NR_fgetxattr, | ||
diff --git a/include/asm-generic/audit_write.h b/include/asm-generic/audit_write.h new file mode 100644 index 00000000000..f10d367fb2a --- /dev/null +++ b/include/asm-generic/audit_write.h | |||
@@ -0,0 +1,11 @@ | |||
1 | #include <asm-generic/audit_dir_write.h> | ||
2 | __NR_acct, | ||
3 | __NR_swapon, | ||
4 | __NR_quotactl, | ||
5 | __NR_truncate, | ||
6 | #ifdef __NR_truncate64 | ||
7 | __NR_truncate64, | ||
8 | #endif | ||
9 | #ifdef __NR_bind | ||
10 | __NR_bind, /* bind can affect fs object only in one way... */ | ||
11 | #endif | ||
diff --git a/include/linux/audit.h b/include/linux/audit.h index 64f9f9e56ac..1077362a2ef 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
@@ -132,6 +132,10 @@ | |||
132 | #define AUDIT_CLASS_DIR_WRITE_32 1 | 132 | #define AUDIT_CLASS_DIR_WRITE_32 1 |
133 | #define AUDIT_CLASS_CHATTR 2 | 133 | #define AUDIT_CLASS_CHATTR 2 |
134 | #define AUDIT_CLASS_CHATTR_32 3 | 134 | #define AUDIT_CLASS_CHATTR_32 3 |
135 | #define AUDIT_CLASS_READ 4 | ||
136 | #define AUDIT_CLASS_READ_32 5 | ||
137 | #define AUDIT_CLASS_WRITE 6 | ||
138 | #define AUDIT_CLASS_WRITE_32 7 | ||
135 | 139 | ||
136 | /* This bitmask is used to validate user input. It represents all bits that | 140 | /* This bitmask is used to validate user input. It represents all bits that |
137 | * are currently used in an audit field constant understood by the kernel. | 141 | * are currently used in an audit field constant understood by the kernel. |