arena: allow freeing NULL
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 23 Sep 2019 20:27:26 +0000 (16:27 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 8 Oct 2019 21:11:11 +0000 (17:11 -0400)
This is a convenience for test code.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/arena.c

index e4ac586..b51bd4e 100644 (file)
@@ -1152,6 +1152,8 @@ static void free_from_arena(struct arena *arena, void *addr, size_t size)
 
 void arena_free(struct arena *arena, void *addr, size_t size)
 {
+       if (!addr)
+               return;
        size = ROUNDUP(size, arena->quantum);
        if (size <= arena->qcache_max)
                return kmem_cache_free(size_to_qcache(arena, size), addr);
@@ -1160,6 +1162,8 @@ void arena_free(struct arena *arena, void *addr, size_t size)
 
 void arena_xfree(struct arena *arena, void *addr, size_t size)
 {
+       if (!addr)
+               return;
        size = ROUNDUP(size, arena->quantum);
        free_from_arena(arena, addr, size);
 }