On Thu, Jun 01, 2023 at 07:25:46PM +0300, Andy Shevchenko wrote:
On Wed, May 31, 2023 at 08:48:35PM +0200, Jonas Gorski wrote:
quoted
On Tue, 30 May 2023 at 23:34, Bjorn Helgaas [off-list ref] wrote:
quoted
On Fri, May 12, 2023 at 02:48:51PM -0500, Bjorn Helgaas wrote:
...
quoted
quoted
Where are we at? Are we going to ignore this because some Coverity
reports are false positives?
Looking at the code I understand where coverity is coming from:
#define __pci_dev_for_each_res0(dev, res, ...) \
for (unsigned int __b = 0; \
res = pci_resource_n(dev, __b), __b < PCI_NUM_RESOURCES; \
__b++)
res will be assigned before __b is checked for being less than
PCI_NUM_RESOURCES, making it point to behind the array at the end of
the last loop iteration.
Which is fine and you stumbled over the same mistake I made, that's why the
documentation has been added to describe why the heck this macro is written
the way it's written.
Coverity sucks.
quoted
Rewriting the test expression as
__b < PCI_NUM_RESOURCES && (res = pci_resource_n(dev, __b));
should avoid the (coverity) warning by making use of lazy evaluation.
Obviously NAK.
quoted
It probably makes the code slightly less performant as res will now be
checked for being not NULL (which will always be true), but I doubt it
will be significant (or in any hot paths).
Oh my god, I mistakenly read this as bus macro, sorry for my rant,
it's simply wrong.
--
With Best Regards,
Andy Shevchenko