From 08d19954b992e8fef495f0fdcd92eefb62c0aee3 Mon Sep 17 00:00:00 2001 From: Grant Ramsay Date: Thu, 3 Aug 2023 13:44:00 +1200 Subject: [PATCH] drivers: can: mcan: clear TX callback on failed TX Elsewhere, "callback != NULL" is used to determine if the callback is in use Signed-off-by: Grant Ramsay --- drivers/can/can_mcan.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/can/can_mcan.c b/drivers/can/can_mcan.c index 0e10e90219f..1f5f486a66b 100644 --- a/drivers/can/can_mcan.c +++ b/drivers/can/can_mcan.c @@ -930,12 +930,14 @@ int can_mcan_send(const struct device *dev, const struct can_frame *frame, k_tim err = can_mcan_write_reg(dev, CAN_MCAN_TXBAR, BIT(put_idx)); if (err != 0) { - goto err_unlock; + goto err_free_tx_cb; } k_mutex_unlock(&data->tx_mtx); return 0; +err_free_tx_cb: + cbs->tx[put_idx].function = NULL; err_unlock: k_mutex_unlock(&data->tx_mtx); k_sem_give(&data->tx_sem);