PNPACPI: Fix device ref leaking in acpi_pnp_match
[firefly-linux-kernel-4.4.55.git] / drivers / pnp / pnpacpi / core.c
index b00c17612a89441752938de2c424d51eec6c941b..d21e8f59c84e2f8e1b500bfdf433a26afe49ac6c 100644 (file)
@@ -321,9 +321,14 @@ static int __init acpi_pnp_match(struct device *dev, void *_pnp)
 {
        struct acpi_device *acpi = to_acpi_device(dev);
        struct pnp_dev *pnp = _pnp;
+       struct device *physical_device;
+
+       physical_device = acpi_get_physical_device(acpi->handle);
+       if (physical_device)
+               put_device(physical_device);
 
        /* true means it matched */
-       return !acpi_get_physical_device(acpi->handle)
+       return !physical_device
            && compare_pnp_id(pnp->id, acpi_device_hid(acpi));
 }