Messages in this thread | | | From | Naresh Kamboju <> | Date | Wed, 8 May 2024 20:04:31 +0530 | Subject | Re: [PATCH v2 1/2] powerpc/io: Avoid clang null pointer arithmetic warnings |
| |
On Fri, 3 May 2024 at 13:26, Michael Ellerman <mpe@ellerman.id.au> wrote: > > With -Wextra clang warns about pointer arithmetic using a null pointer. > When building with CONFIG_PCI=n, that triggers a warning in the IO > accessors, eg: > > In file included from linux/arch/powerpc/include/asm/io.h:672: > linux/arch/powerpc/include/asm/io-defs.h:23:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] > 23 | DEF_PCI_AC_RET(inb, u8, (unsigned long port), (port), pio, port) > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ... > linux/arch/powerpc/include/asm/io.h:591:53: note: expanded from macro '__do_inb' > 591 | #define __do_inb(port) readb((PCI_IO_ADDR)_IO_BASE + port); > | ~~~~~~~~~~~~~~~~~~~~~ ^ > > That is because when CONFIG_PCI=n, _IO_BASE is defined as 0. > > Although _IO_BASE is defined as plain 0, the cast (PCI_IO_ADDR) converts > it to void * before the addition with port happens. > > Instead the addition can be done first, and then the cast. The resulting > value will be the same, but avoids the warning, and also avoids void > pointer arithmetic which is apparently non-standard. > > Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org> > Closes: https://lore.kernel.org/all/CA+G9fYtEh8zmq8k8wE-8RZwW-Qr927RLTn+KqGnq1F=ptaaNsA@mail.gmail.com > Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
-- Linaro LKFT https://lkft.linaro.org
| |