Skip to content

Commit

Permalink
ACPI / scan: Set the visited flag for all enumerated devices
Browse files Browse the repository at this point in the history
Commit 10c7e20 (ACPI / scan: fix enumeration (visited) flags for
bus rescans) attempted to fix a problem with ACPI-based enumerateion
of I2C/SPI devices, but it forgot to ensure that the visited flag
will be set for all of the other enumerated devices, so fix that.

Fixes: 10c7e20 (ACPI / scan: fix enumeration (visited) flags for bus rescans)
Link: https://bugzilla.kernel.org/show_bug.cgi?id=194885
Reported-and-tested-by: Kevin Locke <kevin@kevinlocke.name>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: 4.8+ <stable@vger.kernel.org> # 4.8+
  • Loading branch information
Rafael J. Wysocki committed Apr 13, 2017
1 parent 39da7c5 commit f406270
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions drivers/acpi/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -1857,15 +1857,20 @@ static void acpi_bus_attach(struct acpi_device *device)
return;

device->flags.match_driver = true;
if (!ret) {
ret = device_attach(&device->dev);
if (ret < 0)
return;

if (!ret && device->pnp.type.platform_id)
acpi_default_enumeration(device);
if (ret > 0) {
acpi_device_set_enumerated(device);
goto ok;
}

ret = device_attach(&device->dev);
if (ret < 0)
return;

if (ret > 0 || !device->pnp.type.platform_id)
acpi_device_set_enumerated(device);
else
acpi_default_enumeration(device);

ok:
list_for_each_entry(child, &device->children, node)
acpi_bus_attach(child);
Expand Down

0 comments on commit f406270

Please sign in to comment.