arena: fix btag freeing in arena_destroy()
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 20 Sep 2019 15:14:56 +0000 (11:14 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 8 Oct 2019 21:11:11 +0000 (17:11 -0400)
We are freeing the btags, not the objects they point to.

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

index 00807ee..2c26ff3 100644 (file)
@@ -239,12 +239,12 @@ void arena_destroy(struct arena *arena)
         * The BTs that are page aligned are the ones we want.  We can just
         * ignore the others (unlink from the list). */
        BSD_LIST_FOREACH_SAFE(bt_i, &arena->unused_btags, misc_link, temp) {
-               if (PGOFF(bt_i->start))
+               if (PGOFF(bt_i))
                        BSD_LIST_REMOVE(bt_i, misc_link);
        }
        /* Now the remaining BTs are the first on their page. */
        BSD_LIST_FOREACH_SAFE(bt_i, &arena->unused_btags, misc_link, temp)
-               arena_free(find_my_base(arena), (void*)bt_i->start, PGSIZE);
+               arena_free(find_my_base(arena), bt_i, PGSIZE);
        kfree(arena);
 }