Re: [PATCH] hexagon: fix using plain integer as NULL pointer warning in cmpxchg
Maíra Canal <[email protected]>
| Newsgroups | org.kernel.vger.linux-hexagon,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi Brian, Do you have an estimate for when this patch will be picked? We are getting build reports from Hexagon in the V3D GPU driver [1]. [1] https://lore.kernel.org/oe-kbuild-all/[email protected]/ Best Regards, - Maíra On 07/01/25 07:17, Christian Gmeiner wrote: > Hi Willem, > >> >> From: Willem de Bruijn <[email protected]> >> >> Sparse reports >> >> net/ipv4/inet_diag.c:1511:17: sparse: sparse: Using plain integer as NULL pointer >> >> Due to this code calling cmpxchg on a non-integer type >> struct inet_diag_handler * >> >> return !cmpxchg((const struct inet_diag_handler**)&inet_diag_table[type], >> NULL, h) ? 0 : -EEXIST; >> >> While hexagon's cmpxchg assigns an integer value to a variable of this >> type. >> >> __typeof__(*(ptr)) __oldval = 0; >> >> Update this assignment to cast 0 to the correct type. >> >> The original issue is easily reproduced at head with the below block, >> and is absent after this change. >> >> make LLVM=1 ARCH=hexagon defconfig >> make C=1 LLVM=1 ARCH=hexagon net/ipv4/inet_diag.o >> >> Fixes: 99a70aa051d2 ("Hexagon: Add processor and system headers") >> Reported-by: kernel test robot <[email protected]> >> Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ >> Signed-off-by: Willem de Bruijn <[email protected]> > > Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ > Tested-by: Christian Gmeiner <[email protected]> > >> --- >> arch/hexagon/include/asm/cmpxchg.h | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/hexagon/include/asm/cmpxchg.h b/arch/hexagon/include/asm/cmpxchg.h >> index bf6cf5579cf4..9c58fb81f7fd 100644 >> --- a/arch/hexagon/include/asm/cmpxchg.h >> +++ b/arch/hexagon/include/asm/cmpxchg.h >> @@ -56,7 +56,7 @@ __arch_xchg(unsigned long x, volatile void *ptr, int size) >> __typeof__(ptr) __ptr = (ptr); \ >> __typeof__(*(ptr)) __old = (old); \ >> __typeof__(*(ptr)) __new = (new); \ >> - __typeof__(*(ptr)) __oldval = 0; \ >> + __typeof__(*(ptr)) __oldval = (__typeof__(*(ptr))) 0; \ >> \ >> asm volatile( \ >> "1: %0 = memw_locked(%1);\n" \ >> -- >> 2.47.0.338.g60cca15819-goog >> >> > >