Skip to content

Commit

Permalink
ASAN unpoison whole heap page after adding to size pool
Browse files Browse the repository at this point in the history
  • Loading branch information
peterzhu2118 committed Sep 16, 2024
1 parent 46ba375 commit 50564f8
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions gc/default.c
Original file line number Diff line number Diff line change
Expand Up @@ -2052,6 +2052,7 @@ size_pool_add_page(rb_objspace_t *objspace, rb_size_pool_t *size_pool, rb_heap_t

asan_unlock_freelist(page);
page->freelist = NULL;
asan_unpoison_memory_region(page->body, HEAP_PAGE_SIZE, false);
for (VALUE p = (VALUE)start; p < start + (slot_count * size_pool->slot_size); p += size_pool->slot_size) {
heap_page_add_freeobj(objspace, page, p);
}
Expand Down Expand Up @@ -3969,6 +3970,8 @@ gc_sweep_step(rb_objspace_t *objspace, rb_size_pool_t *size_pool, rb_heap_t *hea
sweep_page->freelist = NULL;
asan_lock_freelist(sweep_page);

asan_poison_memory_region(sweep_page->body, HEAP_PAGE_SIZE);

objspace->empty_pages_count++;
sweep_page->free_next = objspace->empty_pages;
objspace->empty_pages = sweep_page;
Expand Down

0 comments on commit 50564f8

Please sign in to comment.