mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge tag 'audit-pr-20190507' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit
Pull audit updates from Paul Moore:
"We've got a reasonably broad set of audit patches for the v5.2 merge
window, the highlights are below:
- The biggest change, and the source of all the arch/* changes, is
the patchset from Dmitry to help enable some of the work he is
doing around PTRACE_GET_SYSCALL_INFO.
To be honest, including this in the audit tree is a bit of a
stretch, but it does help move audit a little further along towards
proper syscall auditing for all arches, and everyone else seemed to
agree that audit was a "good" spot for this to land (or maybe they
just didn't want to merge it? dunno.).
- We can now audit time/NTP adjustments.
- We continue the work to connect associated audit records into a
single event"
* tag 'audit-pr-20190507' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit: (21 commits)
audit: fix a memory leak bug
ntp: Audit NTP parameters adjustment
timekeeping: Audit clock adjustments
audit: purge unnecessary list_empty calls
audit: link integrity evm_write_xattrs record to syscall event
syscall_get_arch: add "struct task_struct *" argument
unicore32: define syscall_get_arch()
Move EM_UNICORE to uapi/linux/elf-em.h
nios2: define syscall_get_arch()
nds32: define syscall_get_arch()
Move EM_NDS32 to uapi/linux/elf-em.h
m68k: define syscall_get_arch()
hexagon: define syscall_get_arch()
Move EM_HEXAGON to uapi/linux/elf-em.h
h8300: define syscall_get_arch()
c6x: define syscall_get_arch()
arc: define syscall_get_arch()
Move EM_ARCOMPACT and EM_ARCV2 to uapi/linux/elf-em.h
audit: Make audit_log_cap and audit_copy_inode static
audit: connect LOGIN record to its syscall record
...
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
#include <uapi/linux/audit.h>
|
||||
|
||||
static inline int syscall_get_arch(void)
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return AUDIT_ARCH_ALPHA;
|
||||
}
|
||||
|
||||
@@ -10,13 +10,9 @@
|
||||
#define __ASM_ARC_ELF_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/elf-em.h>
|
||||
#include <uapi/asm/elf.h>
|
||||
|
||||
/* These ELF defines belong to uapi but libc elf.h already defines them */
|
||||
#define EM_ARCOMPACT 93
|
||||
|
||||
#define EM_ARCV2 195 /* ARCv2 Cores */
|
||||
|
||||
#define EM_ARC_INUSE (IS_ENABLED(CONFIG_ISA_ARCOMPACT) ? \
|
||||
EM_ARCOMPACT : EM_ARCV2)
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#ifndef _ASM_ARC_SYSCALL_H
|
||||
#define _ASM_ARC_SYSCALL_H 1
|
||||
|
||||
#include <uapi/linux/audit.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/sched.h>
|
||||
#include <asm/unistd.h>
|
||||
@@ -67,4 +68,14 @@ syscall_get_arguments(struct task_struct *task, struct pt_regs *regs,
|
||||
}
|
||||
}
|
||||
|
||||
static inline int
|
||||
syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return IS_ENABLED(CONFIG_ISA_ARCOMPACT)
|
||||
? (IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)
|
||||
? AUDIT_ARCH_ARCOMPACTBE : AUDIT_ARCH_ARCOMPACT)
|
||||
: (IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)
|
||||
? AUDIT_ARCH_ARCV2BE : AUDIT_ARCH_ARCV2);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -73,7 +73,7 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
||||
memcpy(®s->ARM_r0 + 1, args, 5 * sizeof(args[0]));
|
||||
}
|
||||
|
||||
static inline int syscall_get_arch(void)
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
/* ARM tasks don't change audit architectures on the fly. */
|
||||
return AUDIT_ARCH_ARM;
|
||||
|
||||
@@ -87,9 +87,9 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
||||
* We don't care about endianness (__AUDIT_ARCH_LE bit) here because
|
||||
* AArch64 has the same system calls both on little- and big- endian.
|
||||
*/
|
||||
static inline int syscall_get_arch(void)
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
if (is_compat_task())
|
||||
if (is_compat_thread(task_thread_info(task)))
|
||||
return AUDIT_ARCH_ARM;
|
||||
|
||||
return AUDIT_ARCH_AARCH64;
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#ifndef __ASM_C6X_SYSCALL_H
|
||||
#define __ASM_C6X_SYSCALL_H
|
||||
|
||||
#include <uapi/linux/audit.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
@@ -69,4 +70,10 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
||||
regs->a9 = *args;
|
||||
}
|
||||
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)
|
||||
? AUDIT_ARCH_C6XBE : AUDIT_ARCH_C6X;
|
||||
}
|
||||
|
||||
#endif /* __ASM_C6X_SYSCALLS_H */
|
||||
|
||||
@@ -60,7 +60,7 @@ syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
|
||||
}
|
||||
|
||||
static inline int
|
||||
syscall_get_arch(void)
|
||||
syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return AUDIT_ARCH_CSKY;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <uapi/linux/audit.h>
|
||||
|
||||
static inline int
|
||||
syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
|
||||
@@ -27,6 +28,11 @@ syscall_get_arguments(struct task_struct *task, struct pt_regs *regs,
|
||||
*args = regs->er6;
|
||||
}
|
||||
|
||||
static inline int
|
||||
syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return AUDIT_ARCH_H8300;
|
||||
}
|
||||
|
||||
|
||||
/* Misc syscall related bits */
|
||||
|
||||
@@ -23,11 +23,7 @@
|
||||
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/user.h>
|
||||
|
||||
/*
|
||||
* This should really be in linux/elf-em.h.
|
||||
*/
|
||||
#define EM_HEXAGON 164 /* QUALCOMM Hexagon */
|
||||
#include <linux/elf-em.h>
|
||||
|
||||
struct elf32_hdr;
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
#ifndef _ASM_HEXAGON_SYSCALL_H
|
||||
#define _ASM_HEXAGON_SYSCALL_H
|
||||
|
||||
#include <uapi/linux/audit.h>
|
||||
|
||||
typedef long (*syscall_fn)(unsigned long, unsigned long,
|
||||
unsigned long, unsigned long,
|
||||
unsigned long, unsigned long);
|
||||
@@ -41,4 +43,10 @@ static inline void syscall_get_arguments(struct task_struct *task,
|
||||
{
|
||||
memcpy(args, &(®s->r00)[0], 6 * sizeof(args[0]));
|
||||
}
|
||||
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return AUDIT_ARCH_HEXAGON;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -74,7 +74,7 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
||||
ia64_syscall_get_set_arguments(task, regs, args, 1);
|
||||
}
|
||||
|
||||
static inline int syscall_get_arch(void)
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return AUDIT_ARCH_IA64;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _ASM_M68K_SYSCALL_H
|
||||
#define _ASM_M68K_SYSCALL_H
|
||||
|
||||
#include <uapi/linux/audit.h>
|
||||
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return AUDIT_ARCH_M68K;
|
||||
}
|
||||
|
||||
#endif /* _ASM_M68K_SYSCALL_H */
|
||||
@@ -105,7 +105,7 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
||||
asmlinkage unsigned long do_syscall_trace_enter(struct pt_regs *regs);
|
||||
asmlinkage void do_syscall_trace_leave(struct pt_regs *regs);
|
||||
|
||||
static inline int syscall_get_arch(void)
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return AUDIT_ARCH_MICROBLAZE;
|
||||
}
|
||||
|
||||
@@ -141,14 +141,14 @@ extern const unsigned long sys_call_table[];
|
||||
extern const unsigned long sys32_call_table[];
|
||||
extern const unsigned long sysn32_call_table[];
|
||||
|
||||
static inline int syscall_get_arch(void)
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
int arch = AUDIT_ARCH_MIPS;
|
||||
#ifdef CONFIG_64BIT
|
||||
if (!test_thread_flag(TIF_32BIT_REGS)) {
|
||||
if (!test_tsk_thread_flag(task, TIF_32BIT_REGS)) {
|
||||
arch |= __AUDIT_ARCH_64BIT;
|
||||
/* N32 sets only TIF_32BIT_ADDR */
|
||||
if (test_thread_flag(TIF_32BIT_ADDR))
|
||||
if (test_tsk_thread_flag(task, TIF_32BIT_ADDR))
|
||||
arch |= __AUDIT_ARCH_CONVENTION_MIPS64_N32;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1418,7 +1418,7 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)
|
||||
unsigned long args[6];
|
||||
|
||||
sd.nr = syscall;
|
||||
sd.arch = syscall_get_arch();
|
||||
sd.arch = syscall_get_arch(current);
|
||||
syscall_get_arguments(current, regs, args);
|
||||
for (i = 0; i < 6; i++)
|
||||
sd.args[i] = args[i];
|
||||
|
||||
@@ -10,14 +10,13 @@
|
||||
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/fpu.h>
|
||||
#include <linux/elf-em.h>
|
||||
|
||||
typedef unsigned long elf_greg_t;
|
||||
typedef unsigned long elf_freg_t[3];
|
||||
|
||||
extern unsigned int elf_hwcap;
|
||||
|
||||
#define EM_NDS32 167
|
||||
|
||||
#define R_NDS32_NONE 0
|
||||
#define R_NDS32_16_RELA 19
|
||||
#define R_NDS32_32_RELA 20
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#ifndef _ASM_NDS32_SYSCALL_H
|
||||
#define _ASM_NDS32_SYSCALL_H 1
|
||||
|
||||
#include <uapi/linux/audit.h>
|
||||
#include <linux/err.h>
|
||||
struct task_struct;
|
||||
struct pt_regs;
|
||||
@@ -145,4 +146,12 @@ void syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
|
||||
|
||||
memcpy(®s->uregs[0] + 1, args, 5 * sizeof(args[0]));
|
||||
}
|
||||
|
||||
static inline int
|
||||
syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)
|
||||
? AUDIT_ARCH_NDS32BE : AUDIT_ARCH_NDS32;
|
||||
}
|
||||
|
||||
#endif /* _ASM_NDS32_SYSCALL_H */
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#ifndef __ASM_NIOS2_SYSCALL_H__
|
||||
#define __ASM_NIOS2_SYSCALL_H__
|
||||
|
||||
#include <uapi/linux/audit.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
@@ -79,4 +80,9 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
||||
regs->r9 = *args;
|
||||
}
|
||||
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return AUDIT_ARCH_NIOS2;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -68,7 +68,7 @@ syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
|
||||
memcpy(®s->gpr[3], args, 6 * sizeof(args[0]));
|
||||
}
|
||||
|
||||
static inline int syscall_get_arch(void)
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
return AUDIT_ARCH_OPENRISC;
|
||||
}
|
||||
|
||||
@@ -48,11 +48,11 @@ static inline void syscall_rollback(struct task_struct *task,
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
static inline int syscall_get_arch(void)
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
int arch = AUDIT_ARCH_PARISC;
|
||||
#ifdef CONFIG_64BIT
|
||||
if (!is_compat_task())
|
||||
if (!__is_compat_task(task))
|
||||
arch = AUDIT_ARCH_PARISC64;
|
||||
#endif
|
||||
return arch;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user