projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
f110c0c
)
powerpc: Fix audit crash due to save/restore PPR changes
author
Alistair Popple
<
[email protected]
>
Mon, 15 Apr 2013 01:44:14 +0000
(11:44 +1000)
committer
Stephen Rothwell
<
[email protected]
>
Mon, 15 Apr 2013 07:29:45 +0000
(17:29 +1000)
The current mainline crashes when hitting userspace with the following:
kernel BUG at kernel/auditsc.c:1769!
cpu 0x1: Vector: 700 (Program Check) at [
c000000023883a60
]
pc:
c0000000001047a8
: .__audit_syscall_entry+0x38/0x130
lr:
c00000000000ed64
: .do_syscall_trace_enter+0xc4/0x270
sp:
c000000023883ce0
msr:
8000000000029032
current = 0xc000000023800000
paca = 0xc00000000f080380 softe: 0 irq_happened: 0x01
pid = 1629, comm = start_udev
kernel BUG at kernel/auditsc.c:1769!
enter ? for help
[
c000000023883d80
]
c00000000000ed64
.do_syscall_trace_enter+0xc4/0x270
[
c000000023883e30
]
c000000000009b08
syscall_dotrace+0xc/0x38
--- Exception: c00 (System Call) at
0000008010ec50dc
Bisecting found the following patch caused it:
commit
44e9309f1f357794b7ae93d5f3e3e6f11d2b8a7f
Author: Haren Myneni <
[email protected]
>
powerpc: Implement PPR save/restore
It was found this patch corrupted r9 when calling
SET_DEFAULT_THREAD_PPR()
Using r10 as a scratch register instead of r9 solved the problem.
Signed-off-by: Alistair Popple <
[email protected]
>
Acked-by: Michael Neuling <
[email protected]
>
Signed-off-by: Stephen Rothwell <
[email protected]
>
arch/powerpc/kernel/entry_64.S
patch
|
blob
|
history
diff --git
a/arch/powerpc/kernel/entry_64.S
b/arch/powerpc/kernel/entry_64.S
index 256c5bf0adb7a87cb0429bc02c435f3cfecbd3b5..3acb1a076d3f48e73e2a7f7b21aa6d9e4eb873fa 100644
(file)
--- a/
arch/powerpc/kernel/entry_64.S
+++ b/
arch/powerpc/kernel/entry_64.S
@@
-304,7
+304,7
@@
syscall_exit_work:
subi r12,r12,TI_FLAGS
4: /* Anything else left to do? */
- SET_DEFAULT_THREAD_PPR(r3, r
9)
/* Set thread.ppr = 3 */
+ SET_DEFAULT_THREAD_PPR(r3, r
10)
/* Set thread.ppr = 3 */
andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP)
beq .ret_from_except_lite