diff options
| author | Rich Felker <[email protected]> | 2020-08-29 01:01:41 +0000 |
|---|---|---|
| committer | Rich Felker <[email protected]> | 2020-09-14 01:22:55 +0000 |
| commit | b0cfc315ff38c423a5ce9ce159bd5baa4135e688 (patch) | |
| tree | d644d9e035223476718925fee68c57f1d13719a9 /fs/proc/array.c | |
| parent | sh: remove spurious circular inclusion from asm/smp.h (diff) | |
| download | kernel-b0cfc315ff38c423a5ce9ce159bd5baa4135e688.tar.gz kernel-b0cfc315ff38c423a5ce9ce159bd5baa4135e688.zip | |
sh: fix syscall tracing
Addition of SECCOMP_FILTER exposed a longstanding bug in
do_syscall_trace_enter, whereby r0 (the 5th argument register) was
mistakenly used where r3 (syscall_nr) was intended. By overwriting r0
rather than r3 with -1 when attempting to block a syscall, the
existing code would instead have caused the syscall to execute with an
argument clobbered.
Commit 0bb605c2c7f2b4b3 then introduced skipping of the syscall when
do_syscall_trace_enter returns -1, so that the return value set by
seccomp filters would not be clobbered by -ENOSYS. This eliminated the
clobbering of the 5th argument register, but instead caused syscalls
made with a 5th argument of -1 to be misinterpreted as a request by
do_syscall_trace_enter to suppress the syscall.
Fixes: 0bb605c2c7f2b4b3 ("sh: Add SECCOMP_FILTER")
Fixes: ab99c733ae73cce3 ("sh: Make syscall tracer use tracehook notifiers, add TIF_NOTIFY_RESUME.")
Tested-by: John Paul Adrian Glaubitz <[email protected]>
Signed-off-by: Rich Felker <[email protected]>
Diffstat (limited to 'fs/proc/array.c')
0 files changed, 0 insertions, 0 deletions
