Skip to content

Commit

Permalink
esp32s3_wifi_adapter.c: Fix a deadlock
Browse files Browse the repository at this point in the history
Fixes: #15314
  • Loading branch information
yamt committed Jan 8, 2025
1 parent 1bcaacd commit 34c8a38
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c
Original file line number Diff line number Diff line change
Expand Up @@ -2125,6 +2125,13 @@ static void esp_evt_work_cb(void *arg)
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);

switch (evt_adpt->id)
Expand Down Expand Up @@ -2268,6 +2275,7 @@ static void esp_evt_work_cb(void *arg)
}

esp_wifi_lock(false);
net_unlock();

kmm_free(evt_adpt);
}
Expand Down

0 comments on commit 34c8a38

Please sign in to comment.