History

riscv: add audit support

On RISC-V (riscv) audit is supported through generic lib/audit.c. The patch adds required arch specific definitions.

David Abdurachmanov committed 8 years ago

Commit efe75c41 parent 8fe28cb6 files · +26 −2Browse files

Unified · Split

6 files
  1. arch/riscv/Kconfig +1 −0
  2. arch/riscv/include/asm/ptrace.h +5 −0
  3. arch/riscv/include/asm/syscall.h +10 −0
  4. arch/riscv/include/asm/thread_info.h +6 −0
  5. arch/riscv/kernel/entry.S +2 −2
  6. include/uapi/linux/audit.h +2 −0
arch/riscv/Kconfig+1−0
@@ -28,6 +28,7 @@ config RISCV · 27 unmodified lines
2828 select GENERIC_STRNLEN_USER
2929 select GENERIC_SMP_IDLE_THREAD
3030 select GENERIC_ATOMIC64 if !64BIT || !RISCV_ISA_A
31+ select HAVE_ARCH_AUDITSYSCALL
3132 select HAVE_MEMBLOCK_NODE_MAP
3233 select HAVE_DMA_CONTIGUOUS
3334 select HAVE_FUTEX_CMPXCHG if FUTEX
arch/riscv/include/asm/ptrace.h+5−0
@@ -113,6 +113,11 @@ static inline void frame_pointer_set(struct pt_regs *regs, · 112 unmodified lines
113113 SET_FP(regs, val);
114114 }
115115
116+static inline unsigned long regs_return_value(struct pt_regs *regs)
117+{
118+ return regs->a0;
119+}
120+
116121 #endif /* __ASSEMBLY__ */
117122
118123 #endif /* _ASM_RISCV_PTRACE_H */
arch/riscv/include/asm/syscall.h+10−0
@@ -18,6 +18,7 @@ · 17 unmodified lines
1818 #ifndef _ASM_RISCV_SYSCALL_H
1919 #define _ASM_RISCV_SYSCALL_H
2020
21+#include <uapi/linux/audit.h>
2122 #include <linux/sched.h>
2223 #include <linux/err.h>
2324
@@ -99,4 +100,13 @@ static inline void syscall_set_arguments(struct task_struct *task, · 75 unmodified lines
99100 memcpy(&regs->a1 + i * sizeof(regs->a1), args, n * sizeof(regs->a0));
100101 }
101102
103+static inline int syscall_get_arch(void)
104+{
105+#ifdef CONFIG_64BIT
106+ return AUDIT_ARCH_RISCV64;
107+#else
108+ return AUDIT_ARCH_RISCV32;
109+#endif
110+}
111+
102112 #endif /* _ASM_RISCV_SYSCALL_H */
arch/riscv/include/asm/thread_info.h+6−0
@@ -80,13 +80,19 @@ struct thread_info { · 79 unmodified lines
8080 #define TIF_RESTORE_SIGMASK 4 /* restore signal mask in do_signal() */
8181 #define TIF_MEMDIE 5 /* is terminating due to OOM killer */
8282 #define TIF_SYSCALL_TRACEPOINT 6 /* syscall tracepoint instrumentation */
83+#define TIF_SYSCALL_AUDIT 7 /* syscall auditing */
8384
8485 #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
8586 #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
8687 #define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
8788 #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
89+#define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
90+#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
8891
8992 #define _TIF_WORK_MASK \
9093 (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING | _TIF_NEED_RESCHED)
9194
95+#define _TIF_SYSCALL_WORK \
96+ (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_SYSCALL_AUDIT)
97+
9298 #endif /* _ASM_RISCV_THREAD_INFO_H */
arch/riscv/kernel/entry.S+2−2
@@ -201,7 +201,7 @@ handle_syscall: · 200 unmodified lines
201201 REG_S s2, PT_SEPC(sp)
202202 /* Trace syscalls, but only if requested by the user. */
203203 REG_L t0, TASK_TI_FLAGS(tp)
204− andi t0, t0, _TIF_SYSCALL_TRACE
204+ andi t0, t0, _TIF_SYSCALL_WORK
205205 bnez t0, handle_syscall_trace_enter
206206 check_syscall_nr:
207207 /* Check to make sure we don't jump to a bogus syscall number. */
@@ -221,7 +221,7 @@ ret_from_syscall: · 13 unmodified lines
221221 REG_S a0, PT_A0(sp)
222222 /* Trace syscalls, but only if requested by the user. */
223223 REG_L t0, TASK_TI_FLAGS(tp)
224− andi t0, t0, _TIF_SYSCALL_TRACE
224+ andi t0, t0, _TIF_SYSCALL_WORK
225225 bnez t0, handle_syscall_trace_exit
226226
227227 ret_from_exception:
include/uapi/linux/audit.h+2−0
@@ -399,6 +399,8 @@ enum { · 398 unmodified lines
399399 /* do not define AUDIT_ARCH_PPCLE since it is not supported by audit */
400400 #define AUDIT_ARCH_PPC64 (EM_PPC64|__AUDIT_ARCH_64BIT)
401401 #define AUDIT_ARCH_PPC64LE (EM_PPC64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
402+#define AUDIT_ARCH_RISCV32 (EM_RISCV|__AUDIT_ARCH_LE)
403+#define AUDIT_ARCH_RISCV64 (EM_RISCV|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
402404 #define AUDIT_ARCH_S390 (EM_S390)
403405 #define AUDIT_ARCH_S390X (EM_S390|__AUDIT_ARCH_64BIT)
404406 #define AUDIT_ARCH_SH (EM_SH)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t