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