From 90dd51008fce41b9a5d11ce9fa68f8b87e5a1e28 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Thu, 2 Feb 2023 21:03:27 +0000 Subject: [PATCH] sandbox: vm: fix vm_cache.c_hdr_size not being calculated --- sandbox/vm/cache.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sandbox/vm/cache.c b/sandbox/vm/cache.c index fa87849..1925dbc 100644 --- a/sandbox/vm/cache.c +++ b/sandbox/vm/cache.c @@ -16,9 +16,9 @@ vm_cache_t *vm_cache_create(const char *name, size_t objsz, vm_cache_flags_t fla new_cache->c_name = name; new_cache->c_obj_size = objsz; new_cache->c_flags = flags; - + vm_cache_init(new_cache); - + return new_cache; } @@ -31,7 +31,7 @@ void vm_cache_init(vm_cache_t *cache) size_t available = vm_page_order_to_bytes(cache->c_page_order); size_t space_per_item = cache->c_obj_size; - + /* align to 16-byte boundary */ if (space_per_item & 0xF) { space_per_item &= ~0xF; @@ -43,7 +43,7 @@ void vm_cache_init(vm_cache_t *cache) if (!(cache->c_flags & VM_CACHE_OFFSLAB)) { available -= sizeof(vm_slab_t); } - + /* one entry in the freelist per object slot */ space_per_item += sizeof(unsigned int); @@ -51,6 +51,8 @@ void vm_cache_init(vm_cache_t *cache) cache->c_slabs_full = QUEUE_INIT; cache->c_slabs_partial = QUEUE_INIT; cache->c_slabs_empty = QUEUE_INIT; + + cache->c_hdr_size = sizeof(vm_slab_t) + (sizeof(unsigned int) * cache->c_obj_count); } void vm_cache_destroy(vm_cache_t *cache)