• D
    net/ipv6: Ensure cfg is properly initialized in ipv6_create_tempaddr · 3f2d67b6
    David Ahern 提交于
    Valdis reported a BUG in ipv6_add_addr:
    
    [ 1820.832682] BUG: unable to handle kernel NULL pointer dereference at 0000000000000209
    [ 1820.832728] RIP: 0010:ipv6_add_addr+0x280/0xd10
    [ 1820.832732] Code: 49 8b 1f 0f 84 6a 0a 00 00 48 85 db 0f 84 4e 0a 00 00 48 8b 03 48 8b 53 08 49 89 45 00 49 8b 47 10
    49 89 55 08 48 85 c0 74 15 <48> 8b 50 08 48 8b 00 49 89 95 b8 01 00 00 49 89 85 b0 01 00 00 4c
    [ 1820.832847] RSP: 0018:ffffaa07c2fd7880 EFLAGS: 00010202
    [ 1820.832853] RAX: 0000000000000201 RBX: ffffaa07c2fd79b0 RCX: 0000000000000000
    [ 1820.832858] RDX: a4cfbfba2cbfa64c RSI: 0000000000000000 RDI: ffffffff8a8e9fa0
    [ 1820.832862] RBP: ffffaa07c2fd7920 R08: 000000000000017a R09: ffffffff8a555300
    [ 1820.832866] R10: 0000000000000000 R11: 0000000000000000 R12: ffff888d18e71c00
    [ 1820.832871] R13: ffff888d0a9b1200 R14: 0000000000000000 R15: ffffaa07c2fd7980
    [ 1820.832876] FS:  00007faa51bdb800(0000) GS:ffff888d1d400000(0000) knlGS:0000000000000000
    [ 1820.832880] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1820.832885] CR2: 0000000000000209 CR3: 000000021e8f8001 CR4: 00000000001606e0
    [ 1820.832888] Call Trace:
    [ 1820.832898]  ? __local_bh_enable_ip+0x119/0x260
    [ 1820.832904]  ? ipv6_create_tempaddr+0x259/0x5a0
    [ 1820.832912]  ? __local_bh_enable_ip+0x139/0x260
    [ 1820.832921]  ipv6_create_tempaddr+0x2da/0x5a0
    [ 1820.832926]  ? ipv6_create_tempaddr+0x2da/0x5a0
    [ 1820.832941]  manage_tempaddrs+0x1a5/0x240
    [ 1820.832951]  inet6_addr_del+0x20b/0x3b0
    [ 1820.832959]  ? nla_parse+0xce/0x1e0
    [ 1820.832968]  inet6_rtm_deladdr+0xd9/0x210
    [ 1820.832981]  rtnetlink_rcv_msg+0x1d4/0x5f0
    
    Looking at the code I found 1 element (peer_pfx) of the newly introduced
    ifa6_config struct that is not initialized. Use a memset rather than hard
    coding an init for each struct element.
    Reported-by: NValdis Kletnieks <valdis.kletnieks@vt.edu>
    Fixes: e6464b8c ("net/ipv6: Convert ipv6_add_addr to struct ifa6_config")
    Signed-off-by: NDavid Ahern <dsahern@gmail.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    3f2d67b6
addrconf.c 164.3 KB