diff --git a/arch/arm/src/imxrt/imxrt_hprtc.c b/arch/arm/src/imxrt/imxrt_hprtc.c index d6861562b3..fccfe848cc 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 3a8d6d7139..852cae83d9 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 1e2bda1b51..ddc0068ed2 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 d0fe9c68d0..e128d932ae 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; }