Patch "igmp: add a missing spin_lock_init()" has been added to the 3.18-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
igmp: add a missing spin_lock_init()
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
igmp-add-a-missing-spin_lock_init.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Jun 29 19:45:34 CEST 2017
From: WANG Cong <[email protected]>
Date: Tue, 20 Jun 2017 10:46:27 -0700
Subject: igmp: add a missing spin_lock_init()
From: WANG Cong <[email protected]>
[ Upstream commit b4846fc3c8559649277e3e4e6b5cec5348a8d208 ]
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.
--- net/ipv4/igmp.c | 1 + 1 file changed, 1 insertion(+)
net/ipv4/igmp.c +1 -0
@@ -1080,6 +1080,7 @@ static void igmpv3_add_delrec(struct in_ pmc =kzalloc (sizeof (*pmc),GFP_KERNEL );if (!pmc)return ; +spin_lock_init (&pmc->lock);spin_lock_bh (&im->lock); pmc->interface = im->interface;in_dev_hold (in_dev);
Patches currently in stable-queue which might be from [email protected] are
queue-3.18/igmp-add-a-missing-spin_lock_init.patch queue-3.18/igmp-acquire-pmc-lock-for-ip_mc_clear_src.patch