From 88dd705d275119b628d94df86cfc8991664cc44d Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Tue, 10 Jan 2023 12:35:40 +0100 Subject: [PATCH] stm32/stm32f7 CANv1: protect TX buffer during CAN error frame generation Follow up to eb240e0 (PR #8060) --- arch/arm/src/stm32/stm32_can_sock.c | 3 +++ arch/arm/src/stm32f7/stm32_can_sock.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/arch/arm/src/stm32/stm32_can_sock.c b/arch/arm/src/stm32/stm32_can_sock.c index 0a6d9733b2..5e0b8578d2 100644 --- a/arch/arm/src/stm32/stm32_can_sock.c +++ b/arch/arm/src/stm32/stm32_can_sock.c @@ -1666,6 +1666,8 @@ static void stm32can_sceinterrupt_work(void *arg) memcpy(frame->data, data, CAN_ERR_DLC); + net_lock(); + /* Copy the buffer pointer to priv->dev.. Set amount of data * in priv->dev.d_len */ @@ -1687,6 +1689,7 @@ static void stm32can_sceinterrupt_work(void *arg) */ priv->dev.d_buf = (uint8_t *)priv->txdesc; + net_unlock(); } /* Re-enable CAN SCE interrupts */ diff --git a/arch/arm/src/stm32f7/stm32_can_sock.c b/arch/arm/src/stm32f7/stm32_can_sock.c index 55c86fc21a..774e5fe40f 100644 --- a/arch/arm/src/stm32f7/stm32_can_sock.c +++ b/arch/arm/src/stm32f7/stm32_can_sock.c @@ -1690,6 +1690,8 @@ static void stm32can_sceinterrupt_work(void *arg) memcpy(frame->data, data, CAN_ERR_DLC); + net_lock(); + /* Copy the buffer pointer to priv->dev.. Set amount of data * in priv->dev.d_len */ @@ -1711,6 +1713,7 @@ static void stm32can_sceinterrupt_work(void *arg) */ priv->dev.d_buf = (uint8_t *)priv->txdesc; + net_unlock(); } /* Re-enable CAN SCE interrupts */