| From 91895e4091ffbf1721f82ced43ab99c8e9c93aec Mon Sep 17 00:00:00 2001 |
| From: Kirill Tkhai <tkhai@yandex.ru> |
| Date: Fri, 26 Jul 2013 17:21:12 +0400 |
| Subject: sparc64: Fix not SRA'ed %o5 in 32-bit traced syscall |
| |
| From: Kirill Tkhai <tkhai@yandex.ru> |
| |
| [ Upstream commit ab2abda6377723e0d5fbbfe5f5aa16a5523344d1 ] |
| |
| (From v1 to v2: changed comment) |
| |
| On the way linux_sparc_syscall32->linux_syscall_trace32->goto 2f, |
| register %o5 doesn't clear its second 32-bit. |
| |
| Fix that. |
| |
| Signed-off-by: Kirill Tkhai <tkhai@yandex.ru> |
| CC: David Miller <davem@davemloft.net> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/sparc/kernel/syscalls.S | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/arch/sparc/kernel/syscalls.S |
| +++ b/arch/sparc/kernel/syscalls.S |
| @@ -152,7 +152,7 @@ linux_syscall_trace32: |
| srl %i4, 0, %o4 |
| srl %i1, 0, %o1 |
| srl %i2, 0, %o2 |
| - ba,pt %xcc, 2f |
| + ba,pt %xcc, 5f |
| srl %i3, 0, %o3 |
| |
| linux_syscall_trace: |
| @@ -182,13 +182,13 @@ linux_sparc_syscall32: |
| srl %i1, 0, %o1 ! IEU0 Group |
| ldx [%g6 + TI_FLAGS], %l0 ! Load |
| |
| - srl %i5, 0, %o5 ! IEU1 |
| + srl %i3, 0, %o3 ! IEU0 |
| srl %i2, 0, %o2 ! IEU0 Group |
| andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %g0 |
| bne,pn %icc, linux_syscall_trace32 ! CTI |
| mov %i0, %l5 ! IEU1 |
| - call %l7 ! CTI Group brk forced |
| - srl %i3, 0, %o3 ! IEU0 |
| +5: call %l7 ! CTI Group brk forced |
| + srl %i5, 0, %o5 ! IEU1 |
| ba,a,pt %xcc, 3f |
| |
| /* Linux native system calls enter here... */ |