From 594533126807c88253918df8e9b05e2df167f2cf Mon Sep 17 00:00:00 2001 From: wanckl Date: Tue, 14 Jan 2025 21:06:57 +0800 Subject: [PATCH] fix(driver_spi): fixed coverity check in slave and slave_hd --- components/esp_driver_spi/src/gpspi/spi_slave.c | 4 ++-- components/esp_driver_spi/src/gpspi/spi_slave_hd.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/esp_driver_spi/src/gpspi/spi_slave.c b/components/esp_driver_spi/src/gpspi/spi_slave.c index ae9d6d8f8c..029b77bf24 100644 --- a/components/esp_driver_spi/src/gpspi/spi_slave.c +++ b/components/esp_driver_spi/src/gpspi/spi_slave.c @@ -471,7 +471,7 @@ esp_err_t SPI_SLAVE_ATTR spi_slave_queue_reset(spi_host_device_t host) spi_slave_trans_priv_t trans; while (uxQueueMessagesWaiting(spihost[host]->trans_queue)) { - xQueueReceive(spihost[host]->trans_queue, &trans, 0); + SPI_CHECK(pdTRUE == xQueueReceive(spihost[host]->trans_queue, &trans, 0), "can't reset queue", ESP_ERR_INVALID_STATE); spi_slave_uninstall_priv_trans(host, &trans); } spihost[host]->cur_trans.trans = NULL; @@ -527,7 +527,7 @@ esp_err_t SPI_SLAVE_ISR_ATTR spi_slave_queue_reset_isr(spi_host_device_t host) spi_slave_trans_priv_t trans; BaseType_t do_yield = pdFALSE; while (pdFALSE == xQueueIsQueueEmptyFromISR(spihost[host]->trans_queue)) { - xQueueReceiveFromISR(spihost[host]->trans_queue, &trans, &do_yield); + ESP_RETURN_ON_FALSE_ISR(pdTRUE == xQueueReceiveFromISR(spihost[host]->trans_queue, &trans, &do_yield), ESP_ERR_INVALID_STATE, SPI_TAG, "can't reset queue"); spi_slave_uninstall_priv_trans(host, &trans); } if (do_yield) { diff --git a/components/esp_driver_spi/src/gpspi/spi_slave_hd.c b/components/esp_driver_spi/src/gpspi/spi_slave_hd.c index adf545d4ee..3f70338433 100644 --- a/components/esp_driver_spi/src/gpspi/spi_slave_hd.c +++ b/components/esp_driver_spi/src/gpspi/spi_slave_hd.c @@ -437,7 +437,7 @@ static IRAM_ATTR void s_spi_slave_hd_segment_isr(void *arg) bool rx_sent = false; if (!host->tx_curr_trans.trans) { ret = xQueueReceiveFromISR(host->tx_trans_queue, &host->tx_curr_trans, &awoken); - if (ret == pdTRUE) { + if ((ret == pdTRUE) && host->tx_curr_trans.trans) { spicommon_dma_desc_setup_link(hal->dmadesc_tx->desc, host->tx_curr_trans.aligned_buffer, host->tx_curr_trans.trans->len, false); spi_dma_reset(host->dma_ctx->tx_dma_chan); spi_slave_hd_hal_txdma(hal); @@ -456,7 +456,7 @@ static IRAM_ATTR void s_spi_slave_hd_segment_isr(void *arg) } if (!host->rx_curr_trans.trans) { ret = xQueueReceiveFromISR(host->rx_trans_queue, &host->rx_curr_trans, &awoken); - if (ret == pdTRUE) { + if ((ret == pdTRUE) && host->rx_curr_trans.trans) { spicommon_dma_desc_setup_link(hal->dmadesc_rx->desc, host->rx_curr_trans.aligned_buffer, host->rx_curr_trans.trans->len, true); spi_dma_reset(host->dma_ctx->rx_dma_chan); spi_slave_hd_hal_rxdma(hal);