diff options
author | Kirill Tkhai <tkhai@yandex.ru> | 2013-07-26 09:21:12 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-10-13 19:08:33 -0400 |
commit | 4026b686478d8a3de4a10fd870a17ed53a7a2fc6 (patch) | |
tree | 999b779c7f3e0165f0a8a87fb47770b5c0dc95cd /arch/sparc | |
parent | ad779b05b451bf64ca159290339fd770539b298d (diff) |
sparc64: Fix not SRA'ed %o5 in 32-bit traced syscall
[ 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>
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/kernel/syscalls.S | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S index 22a1098961f5..73ec8a798d95 100644 --- a/arch/sparc/kernel/syscalls.S +++ b/arch/sparc/kernel/syscalls.S | |||
@@ -152,7 +152,7 @@ linux_syscall_trace32: | |||
152 | srl %i4, 0, %o4 | 152 | srl %i4, 0, %o4 |
153 | srl %i1, 0, %o1 | 153 | srl %i1, 0, %o1 |
154 | srl %i2, 0, %o2 | 154 | srl %i2, 0, %o2 |
155 | ba,pt %xcc, 2f | 155 | ba,pt %xcc, 5f |
156 | srl %i3, 0, %o3 | 156 | srl %i3, 0, %o3 |
157 | 157 | ||
158 | linux_syscall_trace: | 158 | linux_syscall_trace: |
@@ -182,13 +182,13 @@ linux_sparc_syscall32: | |||
182 | srl %i1, 0, %o1 ! IEU0 Group | 182 | srl %i1, 0, %o1 ! IEU0 Group |
183 | ldx [%g6 + TI_FLAGS], %l0 ! Load | 183 | ldx [%g6 + TI_FLAGS], %l0 ! Load |
184 | 184 | ||
185 | srl %i5, 0, %o5 ! IEU1 | 185 | srl %i3, 0, %o3 ! IEU0 |
186 | srl %i2, 0, %o2 ! IEU0 Group | 186 | srl %i2, 0, %o2 ! IEU0 Group |
187 | andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %g0 | 187 | andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %g0 |
188 | bne,pn %icc, linux_syscall_trace32 ! CTI | 188 | bne,pn %icc, linux_syscall_trace32 ! CTI |
189 | mov %i0, %l5 ! IEU1 | 189 | mov %i0, %l5 ! IEU1 |
190 | call %l7 ! CTI Group brk forced | 190 | 5: call %l7 ! CTI Group brk forced |
191 | srl %i3, 0, %o3 ! IEU0 | 191 | srl %i5, 0, %o5 ! IEU1 |
192 | ba,a,pt %xcc, 3f | 192 | ba,a,pt %xcc, 3f |
193 | 193 | ||
194 | /* Linux native system calls enter here... */ | 194 | /* Linux native system calls enter here... */ |