summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2019-08-22 15:35:35 +0200
committerPhilippe Schenker <philippe.schenker@toradex.com>2020-08-13 16:04:57 +0200
commit57a2454083f5f748e3c2c6c0864792ec2ea4d550 (patch)
treed0341fc5e90ded779a0eb9cd4f30b06b50dfb727
parent45b7602e1da08f7b379c18f9721c49bab46ed4df (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) (cherry picked from commit 670deff1f2c9e20a3073bcf2af309e042b893bf6)
-rw-r--r--drivers/net/can/spi/mcp25xxfd/mcp25xxfd_can_tx.c7
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",