From c05ace557f2c3e2b47878cf09ef304f6f188573e Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Wed, 16 Mar 2022 15:32:36 +0900 Subject: [PATCH] arch: cxd56xx: Fix critical section in serial transmission Fix an issue that the serial transmission buffers are corrupted because serial transmission are not protected by critical section in non-smp mode. --- arch/arm/src/cxd56xx/cxd56_serial.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/src/cxd56xx/cxd56_serial.c b/arch/arm/src/cxd56xx/cxd56_serial.c index 1ec3b7b849..fd1fa7d51b 100644 --- a/arch/arm/src/cxd56xx/cxd56_serial.c +++ b/arch/arm/src/cxd56xx/cxd56_serial.c @@ -1001,9 +1001,13 @@ static void up_txint(FAR struct uart_dev_s *dev, bool enable) * interrupts disabled (note this may recurse). */ +# ifdef CONFIG_SMP spin_unlock_irqrestore(&priv->lock, flags); +# endif uart_xmitchars(dev); +# ifdef CONFIG_SMP flags = spin_lock_irqsave(&priv->lock); +# endif #endif } else