51d3e462ea
[ Upstream commit e04b2cfe61072c7966e1a5fb73dd1feb30c206ed ]
The m_can_start_xmit() function checks if the cdev->tx_skb is NULL and
returns with NETDEV_TX_BUSY in case tx_sbk is not NULL.
There is a race condition in the m_can_tx_work_queue(), where first
the skb is send to the driver and then the case tx_sbk is set to NULL.
A TX complete IRQ might come in between and wake the queue, which
results in tx_skb not being cleared yet.
Fixes:
|
||
---|---|---|
.. | ||
c_can | ||
cc770 | ||
dev | ||
ifi_canfd | ||
m_can | ||
mscan | ||
peak_canfd | ||
rcar | ||
sja1000 | ||
softing | ||
spi | ||
usb | ||
Kconfig | ||
Makefile | ||
at91_can.c | ||
flexcan.c | ||
grcan.c | ||
janz-ican3.c | ||
kvaser_pciefd.c | ||
led.c | ||
pch_can.c | ||
slcan.c | ||
sun4i_can.c | ||
ti_hecc.c | ||
vcan.c | ||
vxcan.c | ||
xilinx_can.c |