Merge branch 'acpi-scan'
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 14 Apr 2015 10:53:36 +0000 (12:53 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 14 Apr 2015 10:53:36 +0000 (12:53 +0200)
* acpi-scan:
  ACPI / scan: Fix NULL pointer dereference in acpi_companion_match()

drivers/acpi/scan.c

index d2e3c3e..69bc0d8 100644 (file)
@@ -247,6 +247,7 @@ static int create_of_modalias(struct acpi_device *acpi_dev, char *modalias,
 static struct acpi_device *acpi_companion_match(const struct device *dev)
 {
        struct acpi_device *adev;
+       struct mutex *physical_node_lock;
 
        adev = ACPI_COMPANION(dev);
        if (!adev)
@@ -255,7 +256,8 @@ static struct acpi_device *acpi_companion_match(const struct device *dev)
        if (list_empty(&adev->pnp.ids))
                return NULL;
 
-       mutex_lock(&adev->physical_node_lock);
+       physical_node_lock = &adev->physical_node_lock;
+       mutex_lock(physical_node_lock);
        if (list_empty(&adev->physical_node_list)) {
                adev = NULL;
        } else {
@@ -266,7 +268,7 @@ static struct acpi_device *acpi_companion_match(const struct device *dev)
                if (node->dev != dev)
                        adev = NULL;
        }
-       mutex_unlock(&adev->physical_node_lock);
+       mutex_unlock(physical_node_lock);
 
        return adev;
 }