diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2019-08-22 15:35:35 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2020-02-12 11:06:09 +0100 |
commit | 207ab18b30f04a0ae11b8e5cd46f868113a68049 (patch) | |
tree | 87213a53f1135da2683dc19fe33d6d1fc43cff3b /drivers | |
parent | 59f84aec094ef80ed6aa33b8ceb94cb7d2667d30 (diff) |
can: mcp25xxfd: mcp25xxfd_can_tx_start_xmit() fix possible race condition
Put sbk into echo queue before triggering send.
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
(cherry picked from commit 2c1df7da765455d86f5630e050905aa3b599ed97)
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c b/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c index 6b02d8d2149b..07526a23c054 100644 --- a/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c +++ b/drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c @@ -601,13 +601,14 @@ netdev_tx_t mcp25xxfd_can_tx_start_xmit(struct sk_buff *skb, ret = spi_async(spi, &smsg->fill_fifo.msg); if (ret) goto out_async_failed; - ret = spi_async(spi, &smsg->trigger_fifo.msg); - if (ret) - goto out_async_failed; /* keep it for reference until the message really got transmitted */ can_put_echo_skb(skb, net, smsg->fifo); + ret = spi_async(spi, &smsg->trigger_fifo.msg); + if (ret) + goto out_async_failed; + return NETDEV_TX_OK; out_async_failed: netdev_err(net, "spi_async submission of fifo %i failed - %i\n", |