diff --git a/core/alloc.c b/core/alloc.c index b61ffc3..c838bfb 100644 --- a/core/alloc.c +++ b/core/alloc.c @@ -192,7 +192,11 @@ int freeFromSlab(void *ptr, struct slabEntry *slab) if ((slabEntry->page <= (vaddr_t)ptr) && ((vaddr_t)ptr < (slabEntry->page + PAGE_SIZE))) { // pr_devel("free place! was %d is now %d\n", slabEntry->freeEl, ptr); - *((vaddr_t *)ptr) = (vaddr_t)slabEntry->freeEl; + if (slabEntry->full) { + *((vaddr_t *)ptr) = (vaddr_t)NULL; + } else { + *((vaddr_t *)ptr) = (vaddr_t)slabEntry->freeEl; + } slabEntry->freeEl = ptr; slabEntry->full = 0; return 1;