Ooops with 2.6.39.2 on pxa270
Russell King - ARM Linux
linux at arm.linux.org.uk
Tue Jul 5 06:19:18 EDT 2011
On Mon, Jul 04, 2011 at 09:58:05PM +0300, Vasily Khoruzhick wrote:
> Hi there, I'm getting following oops on my device (Zipit Z2 with PXA270)
> with 2.6.39.2. And I have no idea what can be wrong :( Ooops is not 100%
> reproducible, it happens in 50% of cases.
Short answer is I can't say for certain. My compiler produces the
following for get_task_pid:
00000248 <get_task_pid>:
248: e1a0c00d mov ip, sp
24c: e92dd800 push {fp, ip, lr, pc}
250: e24cb004 sub fp, ip, #4 ; 0x4
254: e3510000 cmp r1, #0 ; 0x0
258: 159000e8 ldrne r0, [r0, #232]
25c: e3a0300c mov r3, #12 ; 0xc
260: e0230391 mla r3, r1, r3, r0
264: e5930104 ldr r0, [r3, #260]
268: e3500000 cmp r0, #0 ; 0x0
26c: 0a000006 beq 28c <get_task_pid+0x44>
270: e10f2000 mrs r2, CPSR
274: e3823080 orr r3, r2, #128 ; 0x80
278: e121f003 msr CPSR_c, r3
27c: e5903000 ldr r3, [r0] <== faulting insn
280: e2833001 add r3, r3, #1 ; 0x1
284: e5803000 str r3, [r0]
288: e121f002 msr CPSR_c, r2
28c: e89da800 ldm sp, {fp, sp, pc}
which is close enough to your code line (except my r3 is your r1).
We know that the passed r1 value was PIDTYPE_PID, wihch means the ldrne
wasn't executed.
My first guess is that something has overwritten task->pids - either
memory corruption, memory wrap-around due to the kernel thinking it has
more memory than physically fitted, or a buggy driver stamping over
memory it shouldn't.
More information about the linux-arm-kernel
mailing list