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
> >>
> >>
> >
> >
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.