Thread (3 messages) flat view 3 messages, 3 authors, 2023-06-05

Re: [PATCH v8 0/7] Add pci_dev_for_each_resource() helper and update users

From: Bjorn Helgaas <helgaas@kernel.org>
Date: 2023-05-31 21:30:55
Also in: linux-acpi, linux-alpha, linux-arm-kernel, linux-mips, linux-pci, linux-sh, lkml, sparclinux, xen-devel

On Wed, May 31, 2023 at 08:48:35PM +0200, Jonas Gorski wrote:
...
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.

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.

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).
Thanks a lot for looking into this!  I think you're right, and I think
the rewritten expression is more logical as well.  Do you want to post
a patch for it?

Bjorn
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help