Merge branch 'bugfix/heap_corrupt_in_bt_mem_release_on_esp32_v5.0' into 'release/v5.0'

fix(bt): Fix heap corruption in the call of esp_bt_mem_release on ESP32 (v5.0)

See merge request espressif/esp-idf!32804
This commit is contained in:
Jiang Jiang Jian
2024-08-15 16:10:34 +08:00

View File

@@ -1484,6 +1484,14 @@ esp_err_t esp_bt_mem_release(esp_bt_mode_t mode)
.name = "BT Controller Data"
};
/*
* Free data and BSS section for Bluetooth controller ROM code.
* Note that rom mem release must be performed before section _bt_data_start to _bt_data_end is released,
* otherwise `btdm_dram_available_region` will no longer be available when performing rom mem release and
* thus causing heap corruption.
*/
ret = esp_bt_controller_rom_mem_release(mode);
if (mode == ESP_BT_MODE_BTDM) {
/* Start by freeing Bluetooth BSS section */
if (ret == ESP_OK) {
@@ -1496,11 +1504,6 @@ esp_err_t esp_bt_mem_release(esp_bt_mode_t mode)
}
}
/* free data and BSS section for Bluetooth controller ROM code */
if (ret == ESP_OK) {
ret = esp_bt_controller_rom_mem_release(mode);
}
return ret;
}