From 1d4e0ed4c04163eb1ef5945ebe3f24df8a41751b Mon Sep 17 00:00:00 2001 From: Li Shuai Date: Fri, 13 Mar 2026 11:35:05 +0800 Subject: [PATCH] fix(esp_hw_support): fix invalid phy link pointer during sleep modem state deinit --- components/esp_hw_support/sleep_modem.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/components/esp_hw_support/sleep_modem.c b/components/esp_hw_support/sleep_modem.c index 1aa8fa61e9d..3f43ecf53a5 100644 --- a/components/esp_hw_support/sleep_modem.c +++ b/components/esp_hw_support/sleep_modem.c @@ -175,6 +175,7 @@ typedef struct sleep_modem_config { static sleep_modem_config_t s_sleep_modem = { .wifi.phy_link = NULL, .wifi.flags = 0 }; typedef struct { + void *link_head; #define DESC_IDX_I2C_MST_ENA (0) #define DESC_IDX_I2C_MST_SEL (1) #define DESC_IDX_I2C_MST_DIS (2) @@ -274,6 +275,7 @@ esp_err_t sleep_modem_wifi_modem_state_init(void) } } if (err == ESP_OK) { + phy_link_context.link_head = link; s_sleep_modem.wifi.phy_link = (void *)&phy_link_context; s_sleep_modem.wifi.flags = 0; } @@ -300,7 +302,7 @@ static void IRAM_ATTR sleep_modem_state_phy_link_config(void *link_context, uint __attribute__((unused)) void sleep_modem_wifi_modem_state_deinit(void) { if (s_sleep_modem.wifi.phy_link) { - regdma_link_destroy(s_sleep_modem.wifi.phy_link, 0); + regdma_link_destroy(((sleep_modem_state_phy_link_context_t *)(s_sleep_modem.wifi.phy_link))->link_head, 0); s_sleep_modem.wifi.phy_link = NULL; s_sleep_modem.wifi.flags = 0; }