Explorar o código

intr_alloc: don't call ESP_LOG from a critical section

Calling ESP_LOG from a critical section leads to abort() in 4.1, and
may also randomly abort() in earlier versions.

Closes FCS-268
Ivan Grokhotkov %!s(int64=6) %!d(string=hai) anos
pai
achega
386804d407
Modificáronse 1 ficheiros con 2 adicións e 2 borrados
  1. 2 2
      components/esp32/intr_alloc.c

+ 2 - 2
components/esp32/intr_alloc.c

@@ -742,11 +742,11 @@ esp_err_t esp_intr_free(intr_handle_t handle)
         }
         //If nothing left, disable interrupt.
         if (handle->vector_desc->shared_vec_info==NULL) free_shared_vector=true;
-        ESP_LOGV(TAG, "esp_intr_free: Deleting shared int: %s. Shared int is %s", svd?"not found or last one":"deleted", free_shared_vector?"empty now.":"still in use");
+        ESP_EARLY_LOGV(TAG, "esp_intr_free: Deleting shared int: %s. Shared int is %s", svd?"not found or last one":"deleted", free_shared_vector?"empty now.":"still in use");
     }
 
     if ((handle->vector_desc->flags&VECDESC_FL_NONSHARED) || free_shared_vector) {
-        ESP_LOGV(TAG, "esp_intr_free: Disabling int, killing handler");
+        ESP_EARLY_LOGV(TAG, "esp_intr_free: Disabling int, killing handler");
 #if CONFIG_SYSVIEW_ENABLE
         if (!free_shared_vector) {
             void *isr_arg = xt_get_interrupt_handler_arg(handle->vector_desc->intno);