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

From: Vishal Moola (Fractile)

Date: Tue Oct 20 2026 - 11:19:26 EST


On Mon, Oct 19, 2026 at 11:31:28PM -0400, Liam R. Howlett (Google) wrote:
> 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>

Reviewed-by: Vishal Moola (Fractile) <vishal.moola@xxxxxxxxx>

It's not really a big deal, but seems this was introduced in commit
8801c35c3672c ("tools: fix -Wunused-result in linux.c"), so +CC the
author Shuah Khan.

> 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
>