From b88aba5ddc355bd6504ad676f49bf8f26265d37c Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Tue, 14 Jan 2025 17:16:04 +0900 Subject: [PATCH] esp32s2: apply wifi deadlock fix from esp32s3 cf. https://github.com/apache/nuttx/pull/15445 --- arch/xtensa/src/esp32s2/esp32s2_wifi_adapter.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/xtensa/src/esp32s2/esp32s2_wifi_adapter.c b/arch/xtensa/src/esp32s2/esp32s2_wifi_adapter.c index 49e3872b3e0..85edf437dc4 100644 --- a/arch/xtensa/src/esp32s2/esp32s2_wifi_adapter.c +++ b/arch/xtensa/src/esp32s2/esp32s2_wifi_adapter.c @@ -2081,6 +2081,13 @@ static void esp_evt_work_cb(void *arg) break; } + /* Some of the following logic (eg. esp_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); switch (evt_adpt->id) @@ -2203,6 +2210,7 @@ static void esp_evt_work_cb(void *arg) } esp_wifi_lock(false); + net_unlock(); kmm_free(evt_adpt); }