summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2021-05-27 10:35:33 +0200
committerMaria Matejka <mq@ucw.cz>2021-09-10 17:38:22 +0200
commit923a6644b206f70435c3d01b93b6880701938b49 (patch)
tree10b0f3b96e248249e8c18266a576a6bcf34a4992
parent227e2d5541e86210b383c8e8054805692ad3cf14 (diff)
Fixed memory poisoning in slab
-rw-r--r--lib/slab.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/slab.c b/lib/slab.c
index b0a01ae7..8d16c433 100644
--- a/lib/slab.c
+++ b/lib/slab.c
@@ -269,6 +269,9 @@ no_partial:
goto okay;
}
h = alloc_page();
+#ifdef POISON
+ memset(h, 0xba, get_page_size());
+#endif
ASSERT_DIE(SL_GET_HEAD(h) == h);
memset(h, 0, s->head_size);
add_head(&s->partial_heads, &h->n);
@@ -324,7 +327,12 @@ sl_free(slab *s, void *oo)
{
rem_node(&h->n);
if (s->num_empty_heads >= MAX_EMPTY_HEADS)
+ {
+#ifdef POISON
+ memset(h, 0xde, get_page_size());
+#endif
free_page(h);
+ }
else
{
add_head(&s->empty_heads, &h->n);