mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-12-25 19:31:47 +00:00
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> |
||
|---|---|---|
| .. | ||
| chip.c | ||
| chip.h | ||
| global1_atu.c | ||
| global1_vtu.c | ||
| global1.c | ||
| global1.h | ||
| global2_avb.c | ||
| global2_scratch.c | ||
| global2.c | ||
| global2.h | ||
| hwtstamp.c | ||
| hwtstamp.h | ||
| Kconfig | ||
| Makefile | ||
| phy.c | ||
| phy.h | ||
| port.c | ||
| port.h | ||
| ptp.c | ||
| ptp.h | ||
| serdes.c | ||
| serdes.h | ||