RE: [PATCH] hexagon: fix using plain integer as NULL pointer warning in cmpxchg
Brian Cain <[email protected]>
| Newsgroups | org.kernel.vger.linux-hexagon,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CH3SPRMB0001A4CF7CD6E522DC45D5D9B8EC2@CH3SPRMB0001.namprd02.prod.outlook.com> |
> -----Original Message----- > From: Maíra Canal <[email protected]> > Sent: Sunday, January 26, 2025 4:59 PM > To: Christian Gmeiner <[email protected]>; Willem de Bruijn > <[email protected]> > Cc: [email protected]; Brian Cain <[email protected]>; linux- > [email protected]; [email protected]; [email protected]; > Willem de Bruijn <[email protected]>; kernel test robot <[email protected]>; > [email protected] > Subject: Re: [PATCH] hexagon: fix using plain integer as NULL pointer warning > in cmpxchg > > WARNING: This email originated from outside of Qualcomm. Please be wary of > any links or attachments, and do not enable macros. > > 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]. Sorry for the delay. I will work on it this week, Maíra. > [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/202411091538.PGSTqUBi- > [email protected]/ > >> Signed-off-by: Willem de Bruijn <[email protected]> > > > > Closes: https://lore.kernel.org/oe-kbuild-all/202501031246.AD8Jjze0- > [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 > >> > >> > > > >