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 | ||
| at91_can.c | ||
| flexcan.c | ||
| grcan.c | ||
| janz-ican3.c | ||
| Kconfig | ||
| kvaser_pciefd.c | ||
| led.c | ||
| Makefile | ||
| pch_can.c | ||
| slcan.c | ||
| sun4i_can.c | ||
| ti_hecc.c | ||
| vcan.c | ||
| vxcan.c | ||
| xilinx_can.c | ||