[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CA+FuTScwvZDxX6OVAnde+hBCKp5P5UF74jFAL-6HEQ3v1Wg_sA@mail.gmail.com>
Date: Sun, 10 Nov 2024 11:03:40 -0500
From: Willem de Bruijn <willemb@...gle.com>
To: kernel test robot <lkp@...el.com>
Cc: Eric Dumazet <edumazet@...gle.com>, oe-kbuild-all@...ts.linux.dev,
linux-kernel@...r.kernel.org, Paolo Abeni <pabeni@...hat.com>,
Guillaume Nault <gnault@...hat.com>, Kuniyuki Iwashima <kuniyu@...zon.com>,
David Howells <dhowells@...hat.com>, linux-hexagon@...r.kernel.org, bcain@...cinc.com
Subject: Re: net/ipv4/inet_diag.c:1511:17: sparse: sparse: Using plain integer
as NULL pointer
On Sat, Nov 9, 2024 at 3:00 AM kernel test robot <lkp@...el.com> wrote:
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: da4373fbcf006deda90e5e6a87c499e0ff747572
> commit: 223f55196bbdb182a9b8de6108a0834b5e5e832e inet_diag: allow concurrent operations
> date: 10 months ago
> config: hexagon-randconfig-r112-20241109 (https://download.01.org/0day-ci/archive/20241109/202411091538.PGSTqUBi-lkp@intel.com/config)
> compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 592c0fe55f6d9a811028b5f3507be91458ab2713)
> reproduce: (https://download.01.org/0day-ci/archive/20241109/202411091538.PGSTqUBi-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@...el.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202411091538.PGSTqUBi-lkp@intel.com/
>
> sparse warnings: (new ones prefixed by >>)
> >> net/ipv4/inet_diag.c:1511:17: sparse: sparse: Using plain integer as NULL pointer
>
> vim +1511 net/ipv4/inet_diag.c
>
> 1503
> 1504 int inet_diag_register(const struct inet_diag_handler *h)
> 1505 {
> 1506 const __u16 type = h->idiag_type;
> 1507
> 1508 if (type >= IPPROTO_MAX)
> 1509 return -EINVAL;
> 1510
> > 1511 return !cmpxchg((const struct inet_diag_handler **)&inet_diag_table[type],
> 1512 NULL, h) ? 0 : -EEXIST;
> 1513 }
> 1514 EXPORT_SYMBOL_GPL(inet_diag_register);
> 1515
The code is still present in latest net-next.
But this appears specific to the hexagon architecture. Specifically to
that initialization of __oldval to 0.
define arch_cmpxchg(ptr, old, new) \
({ \
__typeof__(ptr) __ptr = (ptr); \
__typeof__(*(ptr)) __old = (old); \
__typeof__(*(ptr)) __new = (new); \
__typeof__(*(ptr)) __oldval = 0; \
While here *ptr is of type const struct inet_diag_handler *.
Another typeof as cast seems to fix it:
+++ 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; \
Easily reproduced with
make LLVM=1 ARCH=hexagon defconfig
make C=1 LLVM=1 ARCH=hexagon net/ipv4/inet_diag.o
Powered by blists - more mailing lists