fix(ledc): fix potential null dereference issue & add test case

This commit is contained in:
Chen Chen
2025-11-19 17:31:58 +08:00
parent 70a0fb5b7f
commit 3ae65813ca
4 changed files with 63 additions and 14 deletions
+10 -1
View File
@@ -1582,11 +1582,20 @@ exit:
esp_err_t ledc_fade_func_install(int intr_alloc_flags)
{
LEDC_CHECK(s_ledc_fade_isr_handle == NULL, "fade function already installed", ESP_ERR_INVALID_STATE);
ledc_mode_t speed_mode = LEDC_SPEED_MODE_MAX;
for (int i = 0; i < LEDC_SPEED_MODE_MAX; i++) {
if (p_ledc_obj[i] != NULL) {
speed_mode = i;
break;
}
}
//OR intr_alloc_flags with ESP_INTR_FLAG_IRAM because the fade isr is in IRAM
return esp_intr_alloc_intrstatus(
ETS_LEDC_INTR_SOURCE,
intr_alloc_flags | ESP_INTR_FLAG_IRAM,
(uint32_t)ledc_hal_get_fade_end_intr_addr(&(p_ledc_obj[0]->ledc_hal)),
(uint32_t)ledc_hal_get_fade_end_intr_addr(&(p_ledc_obj[speed_mode]->ledc_hal)),
LEDC_LL_FADE_END_INTR_MASK,
ledc_fade_isr,
NULL,