axienet_dma_err_handler can race with axienet_stop in the following
manner:
CPU 1 CPU 2
====================== ==================
axienet_stop()
napi_disable()
axienet_dma_stop()
axienet_dma_err_handler()
napi_disable()
axienet_dma_stop()
axienet_dma_start()
napi_enable()
cancel_work_sync()
free_irq()
Fix this by setting a flag in axienet_stop telling
axienet_dma_err_handler not to bother doing anything. I chose not to use
disable_work_sync to allow for easier backporting.
Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
Fixes:
|
||
---|---|---|
.. | ||
Kconfig | ||
ll_temac.h | ||
ll_temac_main.c | ||
ll_temac_mdio.c | ||
Makefile | ||
xilinx_axienet.h | ||
xilinx_axienet_main.c | ||
xilinx_axienet_mdio.c | ||
xilinx_emaclite.c |