From 8a4f3cec5ab3462f66cfec296bbe0899b88ac92f Mon Sep 17 00:00:00 2001 From: wanckl Date: Tue, 14 Jan 2025 21:07:41 +0800 Subject: [PATCH] fix(driver_twai): fixed coverity check in twai --- components/driver/twai/twai.c | 2 ++ components/esp_driver_spi/src/gpspi/spi_slave.c | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/components/driver/twai/twai.c b/components/driver/twai/twai.c index b6ba2da450..2b1e152700 100644 --- a/components/driver/twai/twai.c +++ b/components/driver/twai/twai.c @@ -293,6 +293,7 @@ static void twai_intr_handler_main(void *arg) static void twai_configure_gpio(twai_obj_t *p_obj) { uint8_t controller_id = p_obj->controller_id; + assert(GPIO_IS_VALID_OUTPUT_GPIO(p_obj->tx_io)); //coverity check uint64_t gpio_mask = BIT64(p_obj->tx_io); //Set RX pin @@ -330,6 +331,7 @@ static void twai_configure_gpio(twai_obj_t *p_obj) static void twai_release_gpio(twai_obj_t *p_obj) { assert(p_obj); + assert(GPIO_IS_VALID_OUTPUT_GPIO(p_obj->tx_io)); //coverity check uint64_t gpio_mask = BIT64(p_obj->tx_io); esp_rom_gpio_connect_in_signal(GPIO_MATRIX_CONST_ONE_INPUT, twai_controller_periph_signals.controllers[p_obj->controller_id].rx_sig, false); diff --git a/components/esp_driver_spi/src/gpspi/spi_slave.c b/components/esp_driver_spi/src/gpspi/spi_slave.c index 029b77bf24..4d41aa60e0 100644 --- a/components/esp_driver_spi/src/gpspi/spi_slave.c +++ b/components/esp_driver_spi/src/gpspi/spi_slave.c @@ -524,15 +524,20 @@ esp_err_t SPI_SLAVE_ISR_ATTR spi_slave_queue_reset_isr(spi_host_device_t host) ESP_RETURN_ON_FALSE_ISR(is_valid_host(host), ESP_ERR_INVALID_ARG, SPI_TAG, "invalid host"); ESP_RETURN_ON_FALSE_ISR(spihost[host], ESP_ERR_INVALID_ARG, SPI_TAG, "host not slave"); + esp_err_t err = ESP_OK; spi_slave_trans_priv_t trans; BaseType_t do_yield = pdFALSE; while (pdFALSE == xQueueIsQueueEmptyFromISR(spihost[host]->trans_queue)) { - ESP_RETURN_ON_FALSE_ISR(pdTRUE == xQueueReceiveFromISR(spihost[host]->trans_queue, &trans, &do_yield), ESP_ERR_INVALID_STATE, SPI_TAG, "can't reset queue"); + if (pdTRUE != xQueueReceiveFromISR(spihost[host]->trans_queue, &trans, &do_yield)) { + err = ESP_ERR_INVALID_STATE; + break; + } spi_slave_uninstall_priv_trans(host, &trans); } if (do_yield) { portYIELD_FROM_ISR(); } + ESP_RETURN_ON_ERROR_ISR(err, SPI_TAG, "can't reset queue"); spihost[host]->cur_trans.trans = NULL; return ESP_OK;