• WANG Cong's avatar
    igmp: add a missing spin_lock_init() · 4feb6121
    WANG Cong authored
    
    [ Upstream commit b4846fc3 ]
    
    Andrey reported a lockdep warning on non-initialized
    spinlock:
    
     INFO: trying to register non-static key.
     the code is fine but needs lockdep annotation.
     turning off the locking correctness validator.
     CPU: 1 PID: 4099 Comm: a.out Not tainted 4.12.0-rc6+ #9
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
     Call Trace:
      __dump_stack lib/dump_stack.c:16
      dump_stack+0x292/0x395 lib/dump_stack.c:52
      register_lock_class+0x717/0x1aa0 kernel/locking/lockdep.c:755
      ? 0xffffffffa0000000
      __lock_acquire+0x269/0x3690 kernel/locking/lockdep.c:3255
      lock_acquire+0x22d/0x560 kernel/locking/lockdep.c:3855
      __raw_spin_lock_bh ./include/linux/spinlock_api_smp.h:135
      _raw_spin_lock_bh+0x36/0x50 kernel/locking/spinlock.c:175
      spin_lock_bh ./include/linux/spinlock.h:304
      ip_mc_clear_src+0x27/0x1e0 net/ipv4/igmp.c:2076
      igmpv3_clear_delrec+0xee/0x4f0 net/ipv4/igmp.c:1194
      ip_mc_destroy_dev+0x4e/0x190 net/ipv4/igmp.c:1736
    
    We miss a spin_lock_init() in igmpv3_add_delrec(), probably
    because previously we never use it on this code path. Since
    we already unlink it from the global mc_tomb list, it is
    probably safe not to acquire this spinlock here. It does not
    harm to have it although, to avoid conditional locking.
    
    Fixes: c38b7d32 ("igmp: acquire pmc lock for ip_mc_clear_src()")
    Reported-by: default avatarAndrey Konovalov <andreyknvl@google.com>
    Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    4feb6121
igmp.c 70.8 KB