From f2f1eb33d67570af19b012385441533d529c30e8 Mon Sep 17 00:00:00 2001 From: Nathaniel Filardo Date: Sat, 6 Mar 2021 18:34:56 +0000 Subject: [PATCH] SP: amplify on dealloc and query paths --- src/mem/alloc.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/mem/alloc.h b/src/mem/alloc.h index a907836..684e257 100644 --- a/src/mem/alloc.h +++ b/src/mem/alloc.h @@ -218,7 +218,7 @@ namespace snmalloc constexpr sizeclass_t sizeclass = size_to_sizeclass_const(size); auto p_ret = CapPtr(p_raw); - auto p_auth = CapPtr(p_raw); + auto p_auth = large_allocator.capptr_amplify(p_ret); if (sizeclass < NUM_SMALL_CLASSES) { @@ -252,7 +252,7 @@ namespace snmalloc SNMALLOC_ASSERT(p_raw != nullptr); auto p_ret = CapPtr(p_raw); - auto p_auth = CapPtr(p_raw); + auto p_auth = large_allocator.capptr_amplify(p_ret); if (likely((size - 1) <= (sizeclass_to_size(NUM_SMALL_CLASSES - 1) - 1))) { @@ -295,7 +295,7 @@ namespace snmalloc uint8_t chunkmap_slab_kind = chunkmap().get(address_cast(p_raw)); auto p_ret = CapPtr(p_raw); - auto p_auth = CapPtr(p_raw); + auto p_auth = large_allocator.capptr_amplify(p_ret); if (likely(chunkmap_slab_kind == CMSuperslab)) { @@ -370,7 +370,7 @@ namespace snmalloc #else uint8_t chunkmap_slab_kind = chunkmap().get(address_cast(p_raw)); auto p_ret = CapPtr(p_raw); - auto p_auth = CapPtr(p_raw); + auto p_auth = large_allocator.capptr_amplify(p_ret); auto super = Superslab::get(p_auth); if (chunkmap_slab_kind == CMSuperslab) @@ -450,7 +450,8 @@ namespace snmalloc #else // This must be called on an external pointer. size_t chunkmap_slab_kind = chunkmap().get(address_cast(p_raw)); - auto p_auth = CapPtr(const_cast(p_raw)); + auto p_ret = CapPtr(const_cast(p_raw)); + auto p_auth = large_allocator.capptr_amplify(p_ret); if (likely(chunkmap_slab_kind == CMSuperslab)) {