linux_dsm_epyc7002/drivers/net/dsa/mv88e6xxx
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
..
chip.c net: dsa: mv88e6xxx: fix races between lock and irq freeing 2018-07-21 22:42:41 -07:00
chip.h net: dsa: mv88e6xxx: Add support for EEPROM via platform data 2018-05-20 18:58:27 -04:00
global1_atu.c net: dsa: mv88e6xxx: Keep ATU/VTU violation statistics 2018-03-29 15:04:22 -04:00
global1_vtu.c net: dsa: mv88e6xxx: Make VTU miss violations less spammy 2018-03-29 15:04:22 -04:00
global1.c net: dsa: mv88e6xxx: add IEEE and IP mapping ops 2018-05-14 14:49:40 -04:00
global1.h net: dsa: mv88e6xxx: add IEEE and IP mapping ops 2018-05-14 14:49:40 -04:00
global2_avb.c net: dsa: mv88e6xxx: add accessors for PTP/TAI registers 2018-02-14 14:33:36 -05:00
global2_scratch.c net: dsa: mv88e6xxx: scratch registers and external MDIO pins 2018-02-22 14:46:32 -05:00
global2.c net: dsa: mv88e6xxx: Remove OF check for IRQ domain 2018-05-20 18:58:27 -04:00
global2.h net: dsa: mv88e6xxx: remove Global 2 setup 2018-04-29 20:36:49 -04:00
hwtstamp.c net: dsa: mv88e6xxx: Fix receive time stamp race condition. 2018-04-12 22:05:58 -04:00
hwtstamp.h net: dsa: mv88e6xxx: add workaround for 6341 timestamping 2018-02-14 14:33:37 -05:00
Kconfig net: dsa: mv88e6xxx: expose switch time as a PTP hardware clock 2018-02-14 14:33:36 -05:00
Makefile net: dsa: mv88e6xxx: add rx/tx timestamping support 2018-02-14 14:33:37 -05:00
phy.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
phy.h net: dsa: mv88e6xxx: remove EEE support 2017-08-01 20:09:10 -07:00
port.c net: dsa: mv88e6xxx: add PHYLINK support 2018-05-11 12:03:06 -04:00
port.h net: dsa: mv88e6xxx: add PHYLINK support 2018-05-11 12:03:06 -04:00
ptp.c net: dsa: mv88e6xxx: add rx/tx timestamping support 2018-02-14 14:33:37 -05:00
ptp.h dsa: ptp: mark dummy helpers as 'inline' 2018-02-22 15:36:42 -05:00
serdes.c net: dsa: mv88e6xxx: 88E6141/6341 SERDES support 2018-05-10 14:16:40 -04:00
serdes.h net: dsa: mv88e6xxx: 88E6141/6341 SERDES support 2018-05-10 14:16:40 -04:00