diff options
author | Richard Guy Briggs <rgb@redhat.com> | 2017-01-17 11:07:15 -0500 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2017-01-18 15:05:25 -0500 |
commit | 62bc306e2083436675e33b5bdeb6a77907d35971 (patch) | |
tree | c209cd6b56b331e8dcc1f4bff2eb75ce822226da /include/linux/audit.h | |
parent | 92c82e8a322b32a6cabe7d8800dc10401157a623 (diff) | |
download | linux-62bc306e2083436675e33b5bdeb6a77907d35971.tar.gz linux-62bc306e2083436675e33b5bdeb6a77907d35971.tar.bz2 linux-62bc306e2083436675e33b5bdeb6a77907d35971.zip |
audit: log 32-bit socketcalls
32-bit socketcalls were not being logged by audit on x86_64 systems.
Log them. This is basically a duplicate of the call from
net/socket.c:sys_socketcall(), but it addresses the impedance mismatch
between 32-bit userspace process and 64-bit kernel audit.
See: https://github.com/linux-audit/audit-kernel/issues/14
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'include/linux/audit.h')
-rw-r--r-- | include/linux/audit.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/linux/audit.h b/include/linux/audit.h index 9d4443f93db6..2be99b276d29 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h @@ -387,6 +387,20 @@ static inline int audit_socketcall(int nargs, unsigned long *args) return __audit_socketcall(nargs, args); return 0; } + +static inline int audit_socketcall_compat(int nargs, u32 *args) +{ + unsigned long a[AUDITSC_ARGS]; + int i; + + if (audit_dummy_context()) + return 0; + + for (i = 0; i < nargs; i++) + a[i] = (unsigned long)args[i]; + return __audit_socketcall(nargs, a); +} + static inline int audit_sockaddr(int len, void *addr) { if (unlikely(!audit_dummy_context())) @@ -513,6 +527,12 @@ static inline int audit_socketcall(int nargs, unsigned long *args) { return 0; } + +static inline int audit_socketcall_compat(int nargs, u32 *args) +{ + return 0; +} + static inline void audit_fd_pair(int fd1, int fd2) { } static inline int audit_sockaddr(int len, void *addr) |