ptrace: in PEEK_SIGINFO, check syscall bitness, not task bitness
authorAndy Lutomirski <luto@kernel.org>
Tue, 22 Mar 2016 21:24:55 +0000 (14:24 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 22 Mar 2016 22:36:02 +0000 (15:36 -0700)
Users of the 32-bit ptrace() ABI expect the full 32-bit ABI.  siginfo
translation should check ptrace() ABI, not caller task ABI.

This is an ABI change on SPARC.  Let's hope that no one relied on the
old buggy ABI.

Signed-off-by: Andy Lutomirski <luto@kernel.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/ptrace.c

index 2341efe7fe026f496095c4a9c1526a69cad3849a..c79b91d09e35a700374bedf3c9e9e815f378aa8a 100644 (file)
@@ -681,7 +681,7 @@ static int ptrace_peek_siginfo(struct task_struct *child,
                        break;
 
 #ifdef CONFIG_COMPAT
-               if (unlikely(is_compat_task())) {
+               if (unlikely(in_compat_syscall())) {
                        compat_siginfo_t __user *uinfo = compat_ptr(data);
 
                        if (copy_siginfo_to_user32(uinfo, &info) ||