Fixed memory poisoning in slab

This commit is contained in:
Maria Matejka 2021-05-27 10:35:33 +02:00
parent 227e2d5541
commit 923a6644b2

View file

@ -269,6 +269,9 @@ no_partial:
goto okay; goto okay;
} }
h = alloc_page(); h = alloc_page();
#ifdef POISON
memset(h, 0xba, get_page_size());
#endif
ASSERT_DIE(SL_GET_HEAD(h) == h); ASSERT_DIE(SL_GET_HEAD(h) == h);
memset(h, 0, s->head_size); memset(h, 0, s->head_size);
add_head(&s->partial_heads, &h->n); add_head(&s->partial_heads, &h->n);
@ -324,7 +327,12 @@ sl_free(slab *s, void *oo)
{ {
rem_node(&h->n); rem_node(&h->n);
if (s->num_empty_heads >= MAX_EMPTY_HEADS) if (s->num_empty_heads >= MAX_EMPTY_HEADS)
{
#ifdef POISON
memset(h, 0xde, get_page_size());
#endif
free_page(h); free_page(h);
}
else else
{ {
add_head(&s->empty_heads, &h->n); add_head(&s->empty_heads, &h->n);