How is this possible - Register r30 contains 0xc2236400 instead of 0xc6236400

Christophe LEROY christophe.leroy at c-s.fr
Tue Jul 3 23:20:28 AEST 2018


Kernel Oops at 0xc0334d5c for reading at address 0xc2236450 which 
corresponds to r30 + 80

But r30 should contain what's at r3 + 16 that is at 0xc619ec10 so r30 
should be c6236400 as shown below (print_hex_dump(regs->gpr[3]) added at 
end of __die() )

So how can r30 contain 0xc2236400 instead ?

And this is not random, it happens at most if not every startup.

c0334d44 <sock_wfree>:
c0334d44:       7c 08 02 a6     mflr    r0
c0334d48:       94 21 ff f0     stwu    r1,-16(r1)
c0334d4c:       bf c1 00 08     stmw    r30,8(r1)
c0334d50:       90 01 00 14     stw     r0,20(r1)
c0334d54:       83 c3 00 10     lwz     r30,16(r3)
c0334d58:       81 23 00 a8     lwz     r9,168(r3)
c0334d5c:       81 5e 00 50     lwz     r10,80(r30)


[  152.288237] Unable to handle kernel paging request for data at 
address 0xc2236450
[  152.295444] Faulting instruction address: 0xc0334d5c
[  152.300369] Oops: Kernel access of bad area, sig: 11 [#1]
[  152.305665] BE PREEMPT DEBUG_PAGEALLOC CMPC885
[  152.313630] CPU: 0 PID: 269 Comm: in:imuxsock Not tainted 
4.14.52-00025-g5bada429cf-dirty #36
[  152.322729] task: c623e100 task.stack: c650c000
[  152.327202] NIP:  c0334d5c LR: c043602c CTR: c0435fb8
[  152.332200] REGS: c650dc00 TRAP: 0300   Not tainted 
(4.14.52-00025-g5bada429cf-dirty)
[  152.340699] MSR:  00009032 <EE,ME,IR,DR,RI>  CR: 28002822 XER: 20000000
[  152.347333] DAR: c2236450 DSISR: c0000000
[  152.347333] GPR00: c043602c c650dcb0 c623e100 c619ec00 c642c060 
00000008 00000018 c650dd4c
[  152.347333] GPR08: c0435fb8 000002b0 c068d830 00000004 28004822 
100d4208 00000000 7780c848
[  152.347333] GPR16: 0ff58398 777674b0 1024b050 1024b0a8 1005ddbc 
0ff5a7bc 000003e8 00000000
[  152.347333] GPR24: 0000008e c5011650 c650deb8 0000008e c619ec00 
00000040 c2236400 c619ec00
[  152.385015] NIP [c0334d5c] sock_wfree+0x18/0xa4
[  152.389458] LR [c043602c] unix_destruct_scm+0x74/0x88
[  152.394399] Call Trace:
[  152.396868] [c650dcb0] [c006348c] ns_to_timeval+0x4c/0x7c (unreliable)
[  152.403305] [c650dcc0] [c043602c] unix_destruct_scm+0x74/0x88
[  152.408999] [c650dcf0] [c033a10c] skb_release_head_state+0x8c/0x110
[  152.415184] [c650dd00] [c033a3c4] skb_release_all+0x18/0x50
[  152.420690] [c650dd10] [c033a7cc] consume_skb+0x38/0xec
[  152.425869] [c650dd20] [c0342d7c] skb_free_datagram+0x1c/0x68
[  152.431535] [c650dd30] [c0435c8c] unix_dgram_recvmsg+0x19c/0x4ac
[  152.437476] [c650ddb0] [c0331370] ___sys_recvmsg+0x98/0x138
[  152.442984] [c650deb0] [c0333280] __sys_recvmsg+0x40/0x84
[  152.448321] [c650df10] [c0333680] SyS_socketcall+0xb8/0x1d4
[  152.453832] [c650df40] [c000d1ac] ret_from_syscall+0x0/0x38
[  152.459286] Instruction dump:
[  152.462225] 41beffac 4bffff58 38800003 4bffffa0 38800001 4bffff98 
7c0802a6 9421fff0
[  152.469881] bfc10008 90010014 83c30010 812300a8 <815e0050> 3bfe00e0 
71480200 4082003c
[  152.477739] c619ec00: 00 00 00 00 00 00 00 00 00 00 00 23 6f d9 b1 65
[  152.484100] c619ec10: c6 23 64 00 00 00 00 00 c6 42 c0 60 00 00 03 e8
[  152.490471] c619ec20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  152.496837] c619ec30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  152.503205] c619ec40: 00 00 00 00 00 00 00 00 00 00 00 00 c0 43 5f b8
[  152.509575] c619ec50: 00 00 00 00 00 00 00 00 00 00 00 8e 00 00 00 00
[  152.515943] c619ec60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  152.522311] c619ec70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  152.528680] c619ec80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[  152.535048] c619ec90: 00 00 ff ff 00 00 ff ff c6 42 30 8e c6 42 31 50
[  152.541417] c619eca0: c6 42 30 00 c6 42 30 00 00 00 02 b0 00 00 00 01
[  152.547781] ---[ end trace 0710a9d231876a27 ]---

Christophe


More information about the Linuxppc-dev mailing list