aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/igmp.c
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2018-07-20 11:53:15 +0200
committerDavid S. Miller <davem@davemloft.net>2018-07-21 22:42:41 -0700
commit3d82475ad46c0b65f2618b5f2bbb4cadbb5ac5d8 (patch)
tree7d0b385d1cae4803a33fb3ad6ac2e84561fa7559 /net/ipv4/igmp.c
parentnet: skb_segment() should not return NULL (diff)
downloadlinux-dev-3d82475ad46c0b65f2618b5f2bbb4cadbb5ac5d8.tar.xz
linux-dev-3d82475ad46c0b65f2618b5f2bbb4cadbb5ac5d8.zip
net: dsa: mv88e6xxx: fix races between lock and irq freeing
free_irq() waits until all handlers for this IRQ have completed. As the relevant handler (mv88e6xxx_g1_irq_thread_fn()) takes the chip's reg_lock it might never return if the thread calling free_irq() holds this lock. For the same reason kthread_cancel_delayed_work_sync() in the polling case must not hold this lock. Also first free the irq (or stop the worker respectively) such that mv88e6xxx_g1_irq_thread_work() isn't called any more before the irq mappings are dropped in mv88e6xxx_g1_irq_free_common() to prevent the worker thread to call handle_nested_irq(0) which results in a NULL-pointer exception. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/igmp.c')
0 files changed, 0 insertions, 0 deletions