esp32s3_wifi_adapter.c: Fix a deadlock

Fixes: https://github.com/apache/nuttx/issues/15314
This commit is contained in:
YAMAMOTO Takashi 2025-01-07 15:44:21 +09:00 committed by Xiang Xiao
parent 8282ed9ab0
commit c0eaf12661

View file

@ -2125,6 +2125,13 @@ static void esp_evt_work_cb(void *arg)
break; break;
} }
/* Some of the following logic (eg. esp32s3_wlan_sta_set_linkstatus)
* can take net_lock(). To maintain the consistent locking order,
* we take net_lock() here before taking esp_wifi_lock. Note that
* net_lock() is a recursive lock.
*/
net_lock();
esp_wifi_lock(true); esp_wifi_lock(true);
switch (evt_adpt->id) switch (evt_adpt->id)
@ -2268,6 +2275,7 @@ static void esp_evt_work_cb(void *arg)
} }
esp_wifi_lock(false); esp_wifi_lock(false);
net_unlock();
kmm_free(evt_adpt); kmm_free(evt_adpt);
} }