• Sabrina Dubroca's avatar
    ipv6: fix cleanup ordering for pingv6 registration · a03dc36b
    Sabrina Dubroca authored
    Commit 6d0bfe22 ("net: ipv6: Add IPv6 support to the ping socket.")
    contains an error in the cleanup path of inet6_init(): when
    proto_register(&pingv6_prot, 1) fails, we try to unregister
    &pingv6_prot. When rawv6_init() fails, we skip unregistering
    &pingv6_prot.
    
    Example of panic (triggered by faking a failure of
     proto_register(&pingv6_prot, 1)):
    
        general protection fault: 0000 [#1] PREEMPT SMP KASAN PTI
        [...]
        RIP: 0010:__list_del_entry_valid+0x79/0x160
        [...]
        Call Trace:
         proto_unregister+0xbb/0x550
         ? trace_preempt_on+0x6f0/0x6f0
         ? sock_no_shutdown+0x10/0x10
         inet6_init+0x153/0x1b8
    
    Fixes: 6d0bfe22 ("net: ipv6: Add IPv6 support to the ping socket.")
    Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a03dc36b
af_inet6.c 26.8 KB