mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-01 18:50:34 +03:00
fix(ledc): fix potential null dereference issue & add test case
This commit is contained in:
@@ -1533,11 +1533,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,
|
||||
|
||||
Reference in New Issue
Block a user