Commit d88d59b6 authored by Thomas Gleixner's avatar Thomas Gleixner

core/entry: Respect syscall number rewrites

The transcript of the x86 entry code to the generic version failed to
reload the syscall number from ptregs after ptrace and seccomp have run,
which both can modify the syscall number in ptregs. It returns the original
syscall number instead which is obviously not the right thing to do.

Reload the syscall number to fix that.

Fixes: 142781e1 ("entry: Provide generic syscall entry functionality")
Reported-by: Kyle Huey <me@kylehuey.com> 
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Tested-by: Kyle Huey <me@kylehuey.com> 
Tested-by: default avatarKees Cook <keescook@chromium.org>
Acked-by: default avatarKees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/87blj6ifo8.fsf@nanos.tec.linutronix.de
parent 9123e3a7
...@@ -65,7 +65,8 @@ static long syscall_trace_enter(struct pt_regs *regs, long syscall, ...@@ -65,7 +65,8 @@ static long syscall_trace_enter(struct pt_regs *regs, long syscall,
syscall_enter_audit(regs, syscall); syscall_enter_audit(regs, syscall);
return ret ? : syscall; /* The above might have changed the syscall number */
return ret ? : syscall_get_nr(current, regs);
} }
noinstr long syscall_enter_from_user_mode(struct pt_regs *regs, long syscall) noinstr long syscall_enter_from_user_mode(struct pt_regs *regs, long syscall)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment