From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79AE72CCB9 for ; Thu, 26 Feb 2026 00:39:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772066387; cv=none; b=ErhpWzSSbhm0sr4M7z6aMirPBq/UiI+TLZP5DpfFZ1jOVQGuOnOH54JBKGyWp91zlG6k3FSzBPQTGzqKYrhvniKh9zY/KZ+rv9xhIsU0xU/QqXuhtldTb3KuZjbHTB+caUgY5pu0DmZ5/JxryU1Ek5byMM1KRWMILpwvIs86SUo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772066387; c=relaxed/simple; bh=ARTPcSrgUSDeZ5aaEMcCmyrM2w97b2lJEf161Z+GogQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=rYy4b6eSW/pH0OFXvG6STHZTSwTnfT9EFQDHDJpYi1txEeXNznJkBMsglFF2WNaKJSXc+YDuxSybf6GmJj1AdpQ+4hkA+AeDAUazlsEjWxJHCbB6cxCUboF+/vsMQcXdC0UfZyr2Omm14gOkxV2lScH90XJzh5LAXSasFuLKzj4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Kw8Z446L; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Kw8Z446L" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B58D7C116D0; Thu, 26 Feb 2026 00:39:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772066387; bh=ARTPcSrgUSDeZ5aaEMcCmyrM2w97b2lJEf161Z+GogQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Kw8Z446LHFulM7Ynb3GVAIBS4yWtXYfSZuj8K7sOXNN4Vc1OowpzfTvTp62gIZZga H/kvXaWO+3ey7eKkhh+voQIUlCyqfQd+nfCGpP9zz1aMU2SefH8KmbSlKvfN7ZunEq nPmuzvANQb9Awjoku2i9L2Io4An7jF2uUSANY7OViiPtnOaSeSp1er443Dnp2Kp2N5 RMAl5Wq2fdHvjy06FiJB+9iHAdI4OHGVVRzWVzi9msFILb/5mfv7f/SF9Z/Zp4Pheq bbCTT5FDYuhlC2SYlifyGVusspXuTwVw+SLzcTWIKR6WsXfRgD24sD2Tj7GWZF7euz 2vFnxVFSRkmGw== From: SeongJae Park To: Mike Rapoport Cc: SeongJae Park , Andrew Morton , David Hildenbrand , Kees Cook , "Liam R. Howlett" , Lorenzo Stoakes , Matthew Wilcox , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH] tools/testing: fix testing/vma and testing/radix-tree build Date: Wed, 25 Feb 2026 16:39:43 -0800 Message-ID: <20260226003945.7145-1-sj@kernel.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260225233111.2760752-1-rppt@kernel.org> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On Thu, 26 Feb 2026 01:31:11 +0200 Mike Rapoport wrote: > From: "Mike Rapoport (Microsoft)" > > Build of VMA and radix-tree tests is unhappy after the conversion of > kzalloc() to kzalloc_obj() in lib/idr.c: > > cc -I../shared -I. -I../../include -I../../arch/x86/include -I../../../lib -g -Og -Wall -D_LGPL_SOURCE -fsanitize=address -fsanitize=undefined -DNUM_VMA_FLAG_BITS=128 -DNUM_MM_FLAG_BITS=128 -c -o idr.o idr.c > idr.c: In function ‘ida_alloc_range’: > idr.c:420:34: error: implicit declaration of function ‘kzalloc_obj’; did you mean ‘kzalloc_node’? [-Wimplicit-function-declaration] > 420 | bitmap = kzalloc_obj(*bitmap, GFP_NOWAIT); > | ^~~~~~~~~~~ > | kzalloc_node > idr.c:420:32: error: assignment to ‘struct ida_bitmap *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] > 420 | bitmap = kzalloc_obj(*bitmap, GFP_NOWAIT); > | ^ > idr.c:447:40: error: assignment to ‘struct ida_bitmap *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] > 447 | bitmap = kzalloc_obj(*bitmap, GFP_NOWAIT); > | ^ > idr.c:468:15: error: assignment to ‘struct ida_bitmap *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] > 468 | alloc = kzalloc_obj(*bitmap, gfp); > | ^ > make: *** [: idr.o] Error 1 > > Import necessary macros from include/linux to tools/include/linux to fix > the compilation. Thank you for fixing this! > > Fixes: 69050f8d6d07 ("treewide: Replace kmalloc with kmalloc_obj for non-scalar types") > Signed-off-by: Mike Rapoport (Microsoft) Tested-by: SeongJae Park > --- > tools/include/linux/gfp.h | 4 ++++ > tools/include/linux/overflow.h | 19 +++++++++++++++++++ > tools/include/linux/slab.h | 9 +++++++++ > 3 files changed, 32 insertions(+) > > diff --git a/tools/include/linux/gfp.h b/tools/include/linux/gfp.h > index 6a10ff5f5be9..9e957b57b694 100644 > --- a/tools/include/linux/gfp.h > +++ b/tools/include/linux/gfp.h > @@ -5,6 +5,10 @@ > #include > #include > > +/* Helper macro to avoid gfp flags if they are the default one */ > +#define __default_gfp(a,...) a > +#define default_gfp(...) __default_gfp(__VA_ARGS__ __VA_OPT__(,) GFP_KERNEL) > + > static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags) > { > return !!(gfp_flags & __GFP_DIRECT_RECLAIM); > diff --git a/tools/include/linux/overflow.h b/tools/include/linux/overflow.h > index dcb0c1bf6866..3427d7880326 100644 > --- a/tools/include/linux/overflow.h > +++ b/tools/include/linux/overflow.h > @@ -68,6 +68,25 @@ > __builtin_mul_overflow(__a, __b, __d); \ > }) > > +/** > + * size_mul() - Calculate size_t multiplication with saturation at SIZE_MAX > + * @factor1: first factor > + * @factor2: second factor > + * > + * Returns: calculate @factor1 * @factor2, both promoted to size_t, > + * with any overflow causing the return value to be SIZE_MAX. The > + * lvalue must be size_t to avoid implicit type conversion. > + */ > +static inline size_t __must_check size_mul(size_t factor1, size_t factor2) > +{ > + size_t bytes; > + > + if (check_mul_overflow(factor1, factor2, &bytes)) > + return SIZE_MAX; > + > + return bytes; > +} > + > /** > * array_size() - Calculate size of 2-dimensional array. > * > diff --git a/tools/include/linux/slab.h b/tools/include/linux/slab.h > index 94937a699402..6d8e9413d5a4 100644 > --- a/tools/include/linux/slab.h > +++ b/tools/include/linux/slab.h > @@ -202,4 +202,13 @@ static inline unsigned int kmem_cache_sheaf_size(struct slab_sheaf *sheaf) > return sheaf->size; > } > > +#define __alloc_objs(KMALLOC, GFP, TYPE, COUNT) \ > +({ \ > + const size_t __obj_size = size_mul(sizeof(TYPE), COUNT); \ > + (TYPE *)KMALLOC(__obj_size, GFP); \ > +}) > + > +#define kzalloc_obj(P, ...) \ > + __alloc_objs(kzalloc, default_gfp(__VA_ARGS__), typeof(P), 1) > + Just out of curiosity. Is there a reason to not copy the comments from the original (include/linux/...) for the above two macros, unlike the others on this patch? Thanks, SJ [...]