From 1a2aa7bc69c44a0fd9d10ed0e1b4993b30e886ad Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 18 Aug 2011 17:13:38 +0000 Subject: [PATCH] [ACPI] - Don't try to start an interface that wasn't registered svn path=/trunk/; revision=53300 --- reactos/drivers/bus/acpi/buspdo.c | 36 ++++++++++++++++--------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/reactos/drivers/bus/acpi/buspdo.c b/reactos/drivers/bus/acpi/buspdo.c index 7d167b7742c..a353c764311 100644 --- a/reactos/drivers/bus/acpi/buspdo.c +++ b/reactos/drivers/bus/acpi/buspdo.c @@ -66,40 +66,42 @@ Bus_PDO_PnP ( } DeviceData->InterfaceName.Length = 0; + status = STATUS_SUCCESS; if (!device) { - IoRegisterDeviceInterface(DeviceData->Common.Self, - &GUID_DEVICE_SYS_BUTTON, - NULL, - &DeviceData->InterfaceName); + status = IoRegisterDeviceInterface(DeviceData->Common.Self, + &GUID_DEVICE_SYS_BUTTON, + NULL, + &DeviceData->InterfaceName); } else if (device->flags.hardware_id && strstr(device->pnp.hardware_id, ACPI_THERMAL_HID)) { - IoRegisterDeviceInterface(DeviceData->Common.Self, - &GUID_DEVICE_THERMAL_ZONE, - NULL, - &DeviceData->InterfaceName); + status = IoRegisterDeviceInterface(DeviceData->Common.Self, + &GUID_DEVICE_THERMAL_ZONE, + NULL, + &DeviceData->InterfaceName); } else if (device->flags.hardware_id && strstr(device->pnp.hardware_id, ACPI_BUTTON_HID_LID)) { - IoRegisterDeviceInterface(DeviceData->Common.Self, - &GUID_DEVICE_LID, - NULL, - &DeviceData->InterfaceName); + status = IoRegisterDeviceInterface(DeviceData->Common.Self, + &GUID_DEVICE_LID, + NULL, + &DeviceData->InterfaceName); } else if (device->flags.hardware_id && strstr(device->pnp.hardware_id, ACPI_PROCESSOR_HID)) { - IoRegisterDeviceInterface(DeviceData->Common.Self, - &GUID_DEVICE_PROCESSOR, - NULL, - &DeviceData->InterfaceName); + status = IoRegisterDeviceInterface(DeviceData->Common.Self, + &GUID_DEVICE_PROCESSOR, + NULL, + &DeviceData->InterfaceName); } - if (DeviceData->InterfaceName.Length != 0) + /* Failure to register an interface is not a fatal failure so don't return a failure status */ + if (NT_SUCCESS(status) && DeviceData->InterfaceName.Length != 0) IoSetDeviceInterfaceState(&DeviceData->InterfaceName, TRUE); state.DeviceState = PowerDeviceD0;