]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: Fix BAR resize rollback path overwriting ret
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Wed, 21 Jan 2026 13:14:16 +0000 (15:14 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 22 Jan 2026 16:28:59 +0000 (10:28 -0600)
The commit 337b1b566db0 ("PCI: Fix restoring BARs on BAR resize rollback
path") added BAR rollback to pci_do_resource_release_and_resize() in case
of resize failure.

On the rollback, pci_claim_resource() is called, which can fail and the
code is prepared for that possibility. pci_claim_resource()'s return value,
however, overwrites the original value of ret so
pci_do_resource_release_and_resize() will return an incorrect value in the
end (as pci_claim_resource() normally succeeds, in practice ret will be 0).

Fix the issue by directly calling pci_claim_resource() inside the if ().

Fixes: 337b1b566db0 ("PCI: Fix restoring BARs on BAR resize rollback path")
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/linux-pci/aW_w1oFQCzUxGYtu@intel.com/
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20260121131417.9582-2-ilpo.jarvinen@linux.intel.com
drivers/pci/setup-bus.c

index 6e90f46f52afddf437142948540b05b3a9b5bec3..9c374feafc7719351d9409962038d93444b53842 100644 (file)
@@ -2556,8 +2556,7 @@ restore:
 
                restore_dev_resource(dev_res);
 
-               ret = pci_claim_resource(dev, i);
-               if (ret)
+               if (pci_claim_resource(dev, i))
                        continue;
 
                if (i < PCI_BRIDGE_RESOURCES) {