lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ