From: Rafael J. Wysocki <[email protected]>
Drivers should not bind to struct acpi_device objects that
acpi_bus_trim() has been called for, so make that function
clear flags.match_driver for those objects.
If that is not done, an ACPI driver may theoretically try to operate
a device that is not physically present.
Fixes: 202317a573b2 (ACPI / scan: Add acpi_device objects for all device nodes in the namespace)
Signed-off-by: Rafael J. Wysocki <[email protected]>
---
drivers/acpi/scan.c | 1 +
1 file changed, 1 insertion(+)
Index: linux-pm/drivers/acpi/scan.c
===================================================================
--- linux-pm.orig/drivers/acpi/scan.c
+++ linux-pm/drivers/acpi/scan.c
@@ -2106,6 +2106,7 @@ void acpi_bus_trim(struct acpi_device *a
list_for_each_entry_reverse(child, &adev->children, node)
acpi_bus_trim(child);
+ adev->flags.match_driver = false;
if (handler) {
if (handler->detach)
handler->detach(adev);
On Mon, 2014-01-27 at 01:16 +0100, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <[email protected]>
>
> Drivers should not bind to struct acpi_device objects that
> acpi_bus_trim() has been called for, so make that function
> clear flags.match_driver for those objects.
>
> If that is not done, an ACPI driver may theoretically try to operate
> a device that is not physically present.
>
> Fixes: 202317a573b2 (ACPI / scan: Add acpi_device objects for all device nodes in the namespace)
> Signed-off-by: Rafael J. Wysocki <[email protected]>
Acked-by: Toshi Kani <[email protected]>
Thanks,
-Toshi