summaryrefslogtreecommitdiff
path: root/arch/parisc/kernel/ptrace.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2016-04-04 09:51:08 (GMT)
committerTakashi Iwai <tiwai@suse.de>2016-04-04 09:51:08 (GMT)
commita99e31512aa435e8391ba5f5e64abeac9c5f2f32 (patch)
tree56bb9d9ccfe76520b672249757e25f686275b204 /arch/parisc/kernel/ptrace.c
parent86c8dd7f4da3fb3f92fc5ab5144c971639d39745 (diff)
parentf03b24a851d32ca85dacab01785b24a7ee717d37 (diff)
downloadlinux-a99e31512aa435e8391ba5f5e64abeac9c5f2f32.tar.xz
Merge branch 'for-linus' into for-next
Conflicts: sound/hda/hdac_i915.c Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'arch/parisc/kernel/ptrace.c')
-rw-r--r--arch/parisc/kernel/ptrace.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/parisc/kernel/ptrace.c b/arch/parisc/kernel/ptrace.c
index ce0b2b4..8fb81a3 100644
--- a/arch/parisc/kernel/ptrace.c
+++ b/arch/parisc/kernel/ptrace.c
@@ -270,7 +270,8 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request,
long do_syscall_trace_enter(struct pt_regs *regs)
{
/* Do the secure computing check first. */
- secure_computing_strict(regs->gr[20]);
+ if (secure_computing() == -1)
+ return -1;
if (test_thread_flag(TIF_SYSCALL_TRACE) &&
tracehook_report_syscall_entry(regs)) {
@@ -296,7 +297,11 @@ long do_syscall_trace_enter(struct pt_regs *regs)
regs->gr[23] & 0xffffffff);
out:
- return regs->gr[20];
+ /*
+ * Sign extend the syscall number to 64bit since it may have been
+ * modified by a compat ptrace call
+ */
+ return (int) ((u32) regs->gr[20]);
}
void do_syscall_trace_exit(struct pt_regs *regs)