• François Cachereul's avatar
    l2tp: fix kernel panic when using IPv4-mapped IPv6 addresses · e18503f4
    François Cachereul authored
    IPv4 mapped addresses cause kernel panic.
    The patch juste check whether the IPv6 address is an IPv4 mapped
    address. If so, use IPv4 API instead of IPv6.
    
    [  940.026915] general protection fault: 0000 [#1]
    [  940.026915] Modules linked in: l2tp_ppp l2tp_netlink l2tp_core pppox ppp_generic slhc loop psmouse
    [  940.026915] CPU: 0 PID: 3184 Comm: memcheck-amd64- Not tainted 3.11.0+ #1
    [  940.026915] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
    [  940.026915] task: ffff880007130e20 ti: ffff88000737e000 task.ti: ffff88000737e000
    [  940.026915] RIP: 0010:[<ffffffff81333780>]  [<ffffffff81333780>] ip6_xmit+0x276/0x326
    [  940.026915] RSP: 0018:ffff88000737fd28  EFLAGS: 00010286
    [  940.026915] RAX: c748521a75ceff48 RBX: ffff880000c30800 RCX: 0000000000000000
    [  940.026915] RDX: ffff88000075cc4e RSI: 0000000000000028 RDI: ffff8800060e5a40
    [  940.026915] RBP: ffff8800060e5a40 R08: 0000000000000000 R09: ffff88000075cc90
    [  940.026915] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88000737fda0
    [  940.026915] R13: 0000000000000000 R14: 0000000000002000 R15: ffff880005d3b580
    [  940.026915] FS:  00007f163dc5e800(0000) GS:ffffffff81623000(0000) knlGS:0000000000000000
    [  940.026915] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  940.026915] CR2: 00000004032dc940 CR3: 0000000005c25000 CR4: 00000000000006f0
    [  940.026915] Stack:
    [  940.026915]  ffff88000075cc4e ffffffff81694e90 ffff880000c30b38 0000000000000020
    [  940.026915]  11000000523c4bac ffff88000737fdb4 0000000000000000 ffff880000c30800
    [  940.026915]  ffff880005d3b580 ffff880000c30b38 ffff8800060e5a40 0000000000000020
    [  940.026915] Call Trace:
    [  940.026915]  [<ffffffff81356cc3>] ? inet6_csk_xmit+0xa4/0xc4
    [  940.026915]  [<ffffffffa0038535>] ? l2tp_xmit_skb+0x503/0x55a [l2tp_core]
    [  940.026915]  [<ffffffff812b8d3b>] ? pskb_expand_head+0x161/0x214
    [  940.026915]  [<ffffffffa003e91d>] ? pppol2tp_xmit+0xf2/0x143 [l2tp_ppp]
    [  940.026915]  [<ffffffffa00292e0>] ? ppp_channel_push+0x36/0x8b [ppp_generic]
    [  940.026915]  [<ffffffffa00293fe>] ? ppp_write+0xaf/0xc5 [ppp_generic]
    [  940.026915]  [<ffffffff8110ead4>] ? vfs_write+0xa2/0x106
    [  940.026915]  [<ffffffff8110edd6>] ? SyS_write+0x56/0x8a
    [  940.026915]  [<ffffffff81378ac0>] ? system_call_fastpath+0x16/0x1b
    [  940.026915] Code: 00 49 8b 8f d8 00 00 00 66 83 7c 11 02 00 74 60 49
    8b 47 58 48 83 e0 fe 48 8b 80 18 01 00 00 48 85 c0 74 13 48 8b 80 78 02
    00 00 <48> ff 40 28 41 8b 57 68 48 01 50 30 48 8b 54 24 08 49 c7 c1 51
    [  940.026915] RIP  [<ffffffff81333780>] ip6_xmit+0x276/0x326
    [  940.026915]  RSP <ffff88000737fd28>
    [  940.057945] ---[ end trace be8aba9a61c8b7f3 ]---
    [  940.058583] Kernel panic - not syncing: Fatal exception in interrupt
    Signed-off-by: default avatarFrançois CACHEREUL <f.cachereul@alphalink.fr>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e18503f4
l2tp_core.c 55.1 KB