Now that BPF subprogs can return arena programs, remove the preprocessor typecasts between u64 and the appropriate arena type for data structure init functions. Signed-off-by: Emil Tsalapatis --- .../bpf/libarena/include/libarena/buddy.h | 6 ++--- .../bpf/libarena/include/libarena/common.h | 3 +-- .../selftests/bpf/libarena/src/buddy.bpf.c | 25 ++++++++++--------- .../selftests/bpf/libarena/src/common.bpf.c | 6 ++--- 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/tools/testing/selftests/bpf/libarena/include/libarena/buddy.h b/tools/testing/selftests/bpf/libarena/include/libarena/buddy.h index 1c69817f1540..4f2a19e3d0c4 100644 --- a/tools/testing/selftests/bpf/libarena/include/libarena/buddy.h +++ b/tools/testing/selftests/bpf/libarena/include/libarena/buddy.h @@ -83,10 +83,8 @@ typedef struct buddy __arena *buddy_t; int buddy_init(buddy_t buddy); int buddy_destroy(buddy_t buddy); -int buddy_free_internal(buddy_t buddy, u64 free); -#define buddy_free(buddy, ptr) buddy_free_internal((buddy), (u64)(ptr)) -u64 buddy_alloc_internal(buddy_t buddy, size_t size); -#define buddy_alloc(alloc, size) ((void __arena *)buddy_alloc_internal((alloc), (size))) +int buddy_free(buddy_t buddy, void __arena *ptr); +void __arena *buddy_alloc(buddy_t buddy, size_t size); #endif /* __BPF__ */ diff --git a/tools/testing/selftests/bpf/libarena/include/libarena/common.h b/tools/testing/selftests/bpf/libarena/include/libarena/common.h index ca1a6c1d6477..a3eb1641ac36 100644 --- a/tools/testing/selftests/bpf/libarena/include/libarena/common.h +++ b/tools/testing/selftests/bpf/libarena/include/libarena/common.h @@ -48,8 +48,7 @@ extern volatile u64 asan_violated; int arena_fls(__u64 word); -u64 arena_malloc_internal(size_t size); -#define arena_malloc(size) ((void __arena *)arena_malloc_internal((size))) +void __arena *arena_malloc(size_t size); void arena_free(void __arena *ptr); /* diff --git a/tools/testing/selftests/bpf/libarena/src/buddy.bpf.c b/tools/testing/selftests/bpf/libarena/src/buddy.bpf.c index 2e565327b748..e73145d6dc63 100644 --- a/tools/testing/selftests/bpf/libarena/src/buddy.bpf.c +++ b/tools/testing/selftests/bpf/libarena/src/buddy.bpf.c @@ -750,25 +750,25 @@ static u64 buddy_alloc_from_new_chunk(buddy_t buddy, buddy_chunk_t chunk, int or return (u64)address; } __weak -u64 buddy_alloc_internal(buddy_t buddy, size_t size) +void __arena *buddy_alloc(buddy_t buddy, size_t size) { buddy_chunk_t chunk; - u64 address = (u64)NULL; + u8 __arena *address = NULL; int order; if (!buddy) - return (u64)NULL; + return NULL; order = size_to_order(size); if (order >= BUDDY_CHUNK_NUM_ORDERS || order < 0) { arena_stderr("invalid order %d (sz %lu)\n", order, size); - return (u64)NULL; + return NULL; } if (buddy_lock(buddy)) - return (u64)NULL; + return NULL; - address = buddy_alloc_from_existing_chunks(buddy, order); + address = (u8 __arena *)buddy_alloc_from_existing_chunks(buddy, order); buddy_unlock(buddy); if (address) goto done; @@ -776,12 +776,12 @@ u64 buddy_alloc_internal(buddy_t buddy, size_t size) /* Get a new chunk. */ chunk = buddy_chunk_get(buddy); if (chunk) - address = buddy_alloc_from_new_chunk(buddy, chunk, order); + address = (u8 __arena *)buddy_alloc_from_new_chunk(buddy, chunk, order); done: /* If we failed to allocate memory, return NULL. */ if (!address) - return (u64)NULL; + return NULL; /* * Unpoison exactly the amount of bytes requested. If the @@ -789,10 +789,10 @@ u64 buddy_alloc_internal(buddy_t buddy, size_t size) * unused bytes that were part of the header. */ if (size < BUDDY_HEADER_OFF + sizeof(struct buddy_header)) - asan_poison((u8 __arena *)address + BUDDY_HEADER_OFF, - BUDDY_POISONED, sizeof(struct buddy_header)); + asan_poison(address + BUDDY_HEADER_OFF, BUDDY_POISONED, + sizeof(struct buddy_header)); - asan_unpoison((u8 __arena *)address, size); + asan_unpoison(address, size); return address; } @@ -878,8 +878,9 @@ static __always_inline int buddy_free_unlocked(buddy_t buddy, u64 addr) return 0; } -__weak int buddy_free_internal(buddy_t buddy, u64 addr) +__weak int buddy_free(buddy_t buddy, void __arena *ptr) { + u64 addr = (u64)ptr; int ret; if (!buddy) diff --git a/tools/testing/selftests/bpf/libarena/src/common.bpf.c b/tools/testing/selftests/bpf/libarena/src/common.bpf.c index 96220c86a533..50be57213dfb 100644 --- a/tools/testing/selftests/bpf/libarena/src/common.bpf.c +++ b/tools/testing/selftests/bpf/libarena/src/common.bpf.c @@ -38,14 +38,14 @@ __weak int arena_buddy_reset(void) return buddy_init(&buddy); } -__weak u64 arena_malloc_internal(size_t size) +__weak void __arena *arena_malloc(size_t size) { - return buddy_alloc_internal(&buddy, size); + return buddy_alloc(&buddy, size); } __weak void arena_free(void __arena *ptr) { - buddy_free_internal(&buddy, (u64)ptr); + buddy_free(&buddy, ptr); } -- 2.54.0