This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit ed4f852073ca71e53de785d3a8e082c382de03bb Author: chao.an <[email protected]> AuthorDate: Thu Feb 3 15:29:14 2022 +0800 arch/arm: correct the sched_lock/spin_lock handling Signed-off-by: chao.an <[email protected]> --- arch/arm/src/imxrt/imxrt_hprtc.c | 1 + arch/arm/src/sama5/sam_hsmci.c | 1 + arch/arm/src/samv7/sam_hsmci.c | 1 + boards/arm/cxd56xx/drivers/audio/cxd56_audio_dma.c | 2 ++ 4 files changed, 5 insertions(+) diff --git a/arch/arm/src/imxrt/imxrt_hprtc.c b/arch/arm/src/imxrt/imxrt_hprtc.c index d686156..fccfe84 100644 --- a/arch/arm/src/imxrt/imxrt_hprtc.c +++ b/arch/arm/src/imxrt/imxrt_hprtc.c @@ -538,6 +538,7 @@ int imxrt_hprtc_setalarm(FAR struct timespec *ts, hprtc_alarm_callback_t cb) if ((uint32_t)ts->tv_sec <= now) { rtcwarn("WARNING: time is in the past\n"); + spin_unlock_irqrestore(NULL, flags); return -EINVAL; } diff --git a/arch/arm/src/sama5/sam_hsmci.c b/arch/arm/src/sama5/sam_hsmci.c index 3a8d6d7..852cae8 100644 --- a/arch/arm/src/sama5/sam_hsmci.c +++ b/arch/arm/src/sama5/sam_hsmci.c @@ -2261,6 +2261,7 @@ static int sam_sendsetup(FAR struct sdio_dev_s *dev, lcderr("ERROR: sr %08" PRIx32 "\n", sr); leave_critical_section(flags); + sched_unlock(); return -EIO; } else if ((sr & HSMCI_INT_TXRDY) != 0) diff --git a/arch/arm/src/samv7/sam_hsmci.c b/arch/arm/src/samv7/sam_hsmci.c index 1e2bda1..ddc0068 100644 --- a/arch/arm/src/samv7/sam_hsmci.c +++ b/arch/arm/src/samv7/sam_hsmci.c @@ -2249,6 +2249,7 @@ static int sam_sendsetup(FAR struct sdio_dev_s *dev, mcerr("ERROR: sr %08" PRIx32 "\n", sr); leave_critical_section(flags); + sched_unlock(); return -EIO; } else if ((sr & HSMCI_INT_TXRDY) != 0) diff --git a/boards/arm/cxd56xx/drivers/audio/cxd56_audio_dma.c b/boards/arm/cxd56xx/drivers/audio/cxd56_audio_dma.c index d0fe9c6..e128d93 100644 --- a/boards/arm/cxd56xx/drivers/audio/cxd56_audio_dma.c +++ b/boards/arm/cxd56xx/drivers/audio/cxd56_audio_dma.c @@ -237,6 +237,8 @@ static CXD56_AUDIO_ECODE exec_dma_ch_sync_workaround( if (timeout_cnt == DMA_TIMEOUT_CNT) { + sched_unlock(); + up_irq_enable(); return CXD56_AUDIO_ECODE_DMA_SMP_TIMEOUT; }
