diff options
authorLinus Torvalds <torvalds@linux-foundation.org>2013-06-13 13:09:50 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2013-06-13 13:09:50 -0700
commit25e33ed9c711c8d64c403a17d4a2cdeac213800b (patch)
parentcb03dc094ad4bfb8223d02b28e2374c51e4c31fb (diff)
parent8c9b7a7b2fc2750af418ddc28e707c42e78aa0bf (diff)
Merge tag 'acpi-3.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI fix from Rafael Wysocki: "This is an alternative fix for the regression introduced in 3.9 whose previous fix had to be reverted right before 3.10-rc5, because it broke one of the Tony's machines. In this one the check is confined to the ACPI video driver (which is the only one causing the problem to happen in the first place) and the Tony's box shouldn't even notice it. - ACPI fix for an issue causing ACPI video driver to attempt to bind to devices it shouldn't touch from Rafael J Wysocki." * tag 'acpi-3.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: ACPI / video: Do not bind to device objects with a scan handler
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 44225cb15f3a..b14ac46948c9 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1017,11 +1017,8 @@ acpi_bus_driver_init(struct acpi_device *device, struct acpi_driver *driver)
return -ENOSYS;
result = driver->ops.add(device);
- if (result) {
- device->driver = NULL;
- device->driver_data = NULL;
+ if (result)
return result;
- }
device->driver = driver;
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 5d7075d25700..440eadf2d32c 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -1722,6 +1722,9 @@ static int acpi_video_bus_add(struct acpi_device *device)
int error;
acpi_status status;
+ if (device->handler)
+ return -EINVAL;
status = acpi_walk_namespace(ACPI_TYPE_DEVICE,
device->parent->handle, 1,
acpi_video_bus_match, NULL,