linux/drivers/net/dsa
Uwe Kleine-König 3d82475ad4 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>
2018-07-21 22:42:41 -07:00
..
b53 treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
microchip
mv88e6xxx net: dsa: mv88e6xxx: fix races between lock and irq freeing 2018-07-21 22:42:41 -07:00
bcm_sf2.c drivers: net: Remove device_node checks with of_mdiobus_register() 2018-05-16 14:20:36 -04:00
bcm_sf2.h
bcm_sf2_cfp.c net: dsa: bcm_sf2: Fix IPv6 rule half deletion 2018-05-16 14:11:22 -04:00
bcm_sf2_regs.h
dsa_loop.c net: dsa: dsa_loop: Make dynamic debugging helpful 2018-05-25 16:46:29 -04:00
dsa_loop.h
dsa_loop_bdinfo.c
Kconfig
lan9303-core.c
lan9303.h
lan9303_i2c.c
lan9303_mdio.c
Makefile
mt7530.c
mt7530.h
mv88e6060.c
mv88e6060.h
qca8k.c net: dsa: qca8k: Remove redundant parentheses 2018-05-23 15:46:34 -04:00
qca8k.h net: dsa: qca8k: Allow overwriting CPU port setting 2018-05-23 15:46:18 -04:00