Skip to content

Commit

Permalink
Merge branch 'fix/heap-trace-hash-map-remove_v5.2' into 'release/v5.2'
Browse files Browse the repository at this point in the history
fix(heap): prevent double traversal of hashmap in map_find_and_remove (backport v5.2)

See merge request espressif/esp-idf!28062
  • Loading branch information
ESP-Marius committed Feb 18, 2024
2 parents 47b7e61 + 490df3a commit 709d8ef
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion components/heap/heap_trace_standalone.c
Expand Up @@ -134,12 +134,18 @@ static HEAP_IRAM_ATTR heap_trace_record_t* map_find_and_remove(void *p)
{
size_t idx = hash_idx(p);
heap_trace_record_t *r_cur = NULL;
heap_trace_record_t *r_prev = NULL;
SLIST_FOREACH(r_cur, &hash_map[idx], slist_hashmap) {
if (r_cur->address == p) {
total_hashmap_hits++;
SLIST_REMOVE(&hash_map[idx], r_cur, heap_trace_record_t, slist_hashmap);
if (r_prev) {
SLIST_REMOVE_AFTER(r_prev, slist_hashmap);
} else {
SLIST_REMOVE_HEAD(&hash_map[idx], slist_hashmap);
}
return r_cur;
}
r_prev = r_cur;
}
total_hashmap_miss++;
return NULL;
Expand Down

0 comments on commit 709d8ef

Please sign in to comment.