[PATCH] tools/testing/shared: catch a failed posix_memalign()

From: Liam R. Howlett (Google)

Date: Mon Oct 19 2026 - 23:31:48 EST


posix_memalign() returns zero or a positive error number and never sets
errno, so the checks for a negative return in kmem_cache_alloc_lru() and
kmem_cache_alloc_bulk() is not possible. A failed aligned allocation
carries on with the pointer unset, into the constructor or the memset().

Test for any non-zero return.

Signed-off-by: Liam R. Howlett (Google) <liam@xxxxxxxxxxxxx>
---
tools/testing/shared/linux.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/testing/shared/linux.c b/tools/testing/shared/linux.c
index e0a0693df08f5..a37d2f86d3254 100644
--- a/tools/testing/shared/linux.c
+++ b/tools/testing/shared/linux.c
@@ -83,7 +83,7 @@ void *kmem_cache_alloc_lru(struct kmem_cache *cachep, struct list_lru *lru,
} else {
pthread_mutex_unlock(&cachep->lock);
if (cachep->align) {
- if (posix_memalign(&p, cachep->align, cachep->size) < 0)
+ if (posix_memalign(&p, cachep->align, cachep->size))
return NULL;
} else {
p = malloc(cachep->size);
@@ -191,7 +191,7 @@ bool kmem_cache_alloc_bulk(struct kmem_cache *cachep, gfp_t gfp, size_t size,

if (cachep->align) {
if (posix_memalign(&p[i], cachep->align,
- cachep->size) < 0)
+ cachep->size))
break;
} else {
p[i] = malloc(cachep->size);
--
2.47.3