Oops in sock_wfree

Christophe LEROY christophe.leroy at c-s.fr
Tue Jul 3 21:34:36 AEST 2018



Le 03/07/2018 à 10:51, Christophe LEROY a écrit :
> Hi,
> 
> I was having strange unexpected memory corruption, therefore I activated 
> DEBUG_PAGEALLOC and I now end up with the following Oops, which tends to 
> make me think we have somewhere in the network code a use-after-free 
> bug. I saw a few of such bugs have been fixed for IPv4 and IPv6. Maybe 
> we have one remaining for Unix sockets ? How can I spot it off and fix it ?
> 
> [   39.645644] Unable to handle kernel paging request for data at 
> address 0xc2235010

In fact, must be something else. This page has never been allocated.
In seems that skb->sk should be c6234fc0 and suddenly it has changed to 
c2234fc0

How can I track that ?

Christophe

> [   39.652860] Faulting instruction address: 0xc0334d5c
> [   39.657783] Oops: Kernel access of bad area, sig: 11 [#1]
> [   39.663085] BE PREEMPT DEBUG_PAGEALLOC CMPC885
> [   39.667488] SAF3000 DIE NOTIFICATION
> [   39.671050] CPU: 0 PID: 269 Comm: in:imuxsock Not tainted 
> 4.14.52-00025-g5bada429cf #22
> [   39.679633] task: c623e100 task.stack: c651e000
> [   39.684106] NIP:  c0334d5c LR: c043602c CTR: c0435fb8
> [   39.689103] REGS: c651fc00 TRAP: 0300   Not tainted 
> (4.14.52-00025-g5bada429cf)
> [   39.697087] MSR:  00009032 <EE,ME,IR,DR,RI>  CR: 28002822 XER: 20000000
> [   39.703720] DAR: c2235010 DSISR: c0000000
> [   39.703720] GPR00: c043602c c651fcb0 c623e100 c619eec0 c642c540 
> 00000008 00000018 c651fd4c
> [   39.703720] GPR08: c0435fb8 000002b0 c068d830 00000004 28004822 
> 100d4208 00000000 77990848
> [   39.703720] GPR16: 0ff58398 778eb4b0 1039f050 1039f0a8 1005ddbc 
> 0ff5a7bc 00000000 00000000
> [   39.703720] GPR24: 00000072 c5011650 c651feb8 00000072 c619eec0 
> 00000040 c2234fc0 c619eec0
> [   39.741401] NIP [c0334d5c] sock_wfree+0x18/0xa4
> [   39.745843] LR [c043602c] unix_destruct_scm+0x74/0x88
> [   39.750786] Call Trace:
> [   39.753253] [c651fcb0] [c006348c] ns_to_timeval+0x4c/0x7c (unreliable)
> [   39.759690] [c651fcc0] [c043602c] unix_destruct_scm+0x74/0x88
> [   39.765385] [c651fcf0] [c033a10c] skb_release_head_state+0x8c/0x110
> [   39.771571] [c651fd00] [c033a3c4] skb_release_all+0x18/0x50
> [   39.777078] [c651fd10] [c033a7cc] consume_skb+0x38/0xec
> [   39.782255] [c651fd20] [c0342d7c] skb_free_datagram+0x1c/0x68
> [   39.787922] [c651fd30] [c0435c8c] unix_dgram_recvmsg+0x19c/0x4ac
> [   39.793863] [c651fdb0] [c0331370] ___sys_recvmsg+0x98/0x138
> [   39.799371] [c651feb0] [c0333280] __sys_recvmsg+0x40/0x84
> [   39.804707] [c651ff10] [c0333680] SyS_socketcall+0xb8/0x1d4
> [   39.810220] [c651ff40] [c000d1ac] ret_from_syscall+0x0/0x38
> [   39.815673] Instruction dump:
> [   39.818612] 41beffac 4bffff58 38800003 4bffffa0 38800001 4bffff98 
> 7c0802a6 9421fff0
> [   39.826267] bfc10008 90010014 83c30010 812300a8 <815e0050> 3bfe00e0 
> 71480200 4082003c
> [   39.834113] ---[ end trace 8affde0490d7e25e ]---
> 
> Thanks
> Christophe


More information about the Linuxppc-dev mailing list