[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <87fruqm9m6.fsf@mail.lhotse>
Date: Fri, 10 May 2024 17:03:45 +1000
From: Michael Ellerman <mpe@...erman.id.au>
To: Naresh Kamboju <naresh.kamboju@...aro.org>
Cc: linuxppc-dev@...ts.ozlabs.org, arnd@...db.de,
linux-kernel@...r.kernel.org, nathan@...nel.org
Subject: Re: [PATCH v2 1/2] powerpc/io: Avoid clang null pointer arithmetic
warnings
Naresh Kamboju <naresh.kamboju@...aro.org> writes:
> On Fri, 3 May 2024 at 13:26, Michael Ellerman <mpe@...erman.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@...aro.org>
>> Closes: https://lore.kernel.org/all/CA+G9fYtEh8zmq8k8wE-8RZwW-Qr927RLTn+KqGnq1F=ptaaNsA@mail.gmail.com
>> Signed-off-by: Michael Ellerman <mpe@...erman.id.au>
>
> Tested-by: Linux Kernel Functional Testing <lkft@...aro.org>
Thanks.
cheers
Powered by blists - more mailing lists