ACPI: PCI: Fix device reference counting in acpi_get_pci_dev()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 18 Oct 2022 17:34:03 +0000 (19:34 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 19 Oct 2022 11:28:30 +0000 (13:28 +0200)
Commit 63f534b8bad9 ("ACPI: PCI: Rework acpi_get_pci_dev()") failed
to reference count the device returned by acpi_get_pci_dev() as
expected by its callers which in some cases may cause device objects
to be dropped prematurely.

Add the missing get_device() to acpi_get_pci_dev().

Fixes: 63f534b8bad9 ("ACPI: PCI: Rework acpi_get_pci_dev()")
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/pci_root.c

index c8385ef..4e3db20 100644 (file)
@@ -323,6 +323,7 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
 
        list_for_each_entry(pn, &adev->physical_node_list, node) {
                if (dev_is_pci(pn->dev)) {
+                       get_device(pn->dev);
                        pci_dev = to_pci_dev(pn->dev);
                        break;
                }