diff options
author | Mickaël Salaün <mic@digikod.net> | 2015-12-29 21:35:44 +0100 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2016-01-10 21:49:48 +0100 |
commit | e04c989eb785af61d2895d76d38c09166296f9c5 (patch) | |
tree | a4698bceed0851ec151539c275e5d615da506d36 /arch/um/include | |
parent | a7df4716d19594b7b3f106f0bc0ca1c548e508e6 (diff) | |
download | linux-stable-e04c989eb785af61d2895d76d38c09166296f9c5.tar.gz linux-stable-e04c989eb785af61d2895d76d38c09166296f9c5.tar.bz2 linux-stable-e04c989eb785af61d2895d76d38c09166296f9c5.zip |
um: Fix ptrace GETREGS/SETREGS bugs
This fix two related bugs:
* PTRACE_GETREGS doesn't get the right orig_ax (syscall) value
* PTRACE_SETREGS can't set the orig_ax value (erased by initial value)
Get rid of the now useless and error-prone get_syscall().
Fix inconsistent behavior in the ptrace implementation for i386 when
updating orig_eax automatically update the syscall number as well. This
is now updated in handle_syscall().
Signed-off-by: Mickaël Salaün <mic@digikod.net>
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Kees Cook <keescook@chromium.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Will Drewry <wad@chromium.org>
Cc: Thomas Meyer <thomas@m3y3r.de>
Cc: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Cc: Anton Ivanov <aivanov@brocade.com>
Cc: Meredydd Luff <meredydd@senatehouse.org>
Cc: David Drysdale <drysdale@google.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Acked-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'arch/um/include')
-rw-r--r-- | arch/um/include/shared/os.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/arch/um/include/shared/os.h b/arch/um/include/shared/os.h index 7a04ddd85334..de5d572225f3 100644 --- a/arch/um/include/shared/os.h +++ b/arch/um/include/shared/os.h @@ -284,7 +284,6 @@ extern void initial_thread_cb_skas(void (*proc)(void *), void *arg); extern void halt_skas(void); extern void reboot_skas(void); -extern int get_syscall(struct uml_pt_regs *regs); /* irq.c */ extern int os_waiting_for_events(struct irq_fd *active_fds); |