Discussion:
[ORLinux] [RE-RESEND][PATCH] audit: replace defines with C stubs
Geert Uytterhoeven
2012-09-13 19:43:16 UTC
Permalink
This replaces the #defines used when CONFIG_AUDIT or CONFIG_AUDIT_SYSCALLS
are disabled so we get type checking during those builds.
Suggested-by: Andrew Morton <akpm at linux-foundation.org>
Signed-off-by: Kees Cook <keescook at chromium.org>
JFYI, the change

-#define audit_syscall_entry(ta,a,b,c,d,e) do { ; } while (0)
+static inline void audit_syscall_entry(int arch, int major, unsigned long a0,
+ unsigned long a1, unsigned long a2,
+ unsigned long a3)
+{ }

uncovers a bug on OpenRISC.

Before,

audit_syscall_entry(audit_arch(), regs->gpr[11],
regs->gpr[3], regs->gpr[4],
regs->gpr[5], regs->gpr[6]);

just expanded to nothing if CONFIG_AUDITSYSCALL was not set.
Now, it fails to compile with:

arch/openrisc/kernel/ptrace.c:190:2: error: implicit declaration of
function 'audit_arch'
http://kisskb.ellerman.id.au/kisskb/buildresult/7191698/

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Kees Cook
2012-09-20 22:40:08 UTC
Permalink
On Thu, Sep 13, 2012 at 12:43 PM, Geert Uytterhoeven
Post by Geert Uytterhoeven
This replaces the #defines used when CONFIG_AUDIT or CONFIG_AUDIT_SYSCALLS
are disabled so we get type checking during those builds.
Suggested-by: Andrew Morton <akpm at linux-foundation.org>
Signed-off-by: Kees Cook <keescook at chromium.org>
JFYI, the change
-#define audit_syscall_entry(ta,a,b,c,d,e) do { ; } while (0)
+static inline void audit_syscall_entry(int arch, int major, unsigned long a0,
+ unsigned long a1, unsigned long a2,
+ unsigned long a3)
+{ }
uncovers a bug on OpenRISC.
Before,
audit_syscall_entry(audit_arch(), regs->gpr[11],
regs->gpr[3], regs->gpr[4],
regs->gpr[5], regs->gpr[6]);
just expanded to nothing if CONFIG_AUDITSYSCALL was not set.
arch/openrisc/kernel/ptrace.c:190:2: error: implicit declaration of
function 'audit_arch'
http://kisskb.ellerman.id.au/kisskb/buildresult/7191698/
Thanks for catching this! It looks like audit.h is missing
AUDIT_ARCH_OPENRISC entirely, and that openrisc doesn't need an
audit_arch() function at all. It could use AUDIT_ARCH_OPENRISC once
that existed, which would just be EM_OPENRISC. (It looks like little
endian mode isn't used.)

I'll send a patch...

-Kees
--
Kees Cook
Chrome OS Security
Loading...