From: Rafael J. Wysocki Date: Mon, 13 Apr 2015 19:35:51 +0000 (+0200) Subject: ACPI / scan: Fix NULL pointer dereference in acpi_companion_match() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=5f2e3274e527ec52413b43b5a9b30422eda4cdd2;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git ACPI / scan: Fix NULL pointer dereference in acpi_companion_match() Commit e1acdeb0e770 "ACPI / scan: Simplify acpi_match_device()" introduced code that may lead to a NULL pointer dereference when trying to unlock a mutex. Fix that. Fixes: e1acdeb0e770 "ACPI / scan: Simplify acpi_match_device()" Signed-off-by: Rafael J. Wysocki --- diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index d2e3c3e3f9c9..69bc0d888c01 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -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; }