Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

ACPI/AC: prevent OOPS on some boxes due to missing check power_supply…

…_register() return value check

commit f197ac1 upstream.

In the ac.c, power_supply_register()'s return value is not checked.

As a result, the driver's add() ops may return success
even though the device failed to initialize.

For example, some BIOS may describe two ACADs in the same DSDT.
The second ACAD device will fail to register,
but ACPI driver's add() ops returns sucessfully.
The ACPI device will receive ACPI notification and cause OOPS.

Signed-off-by: Lan Tianyu <>
Signed-off-by: Len Brown <>
Signed-off-by: Ben Hutchings <>
  • Loading branch information...
commit 3a928a5ea792e05f7acc8852babfce2273c3c185 1 parent 295cc2b
Lan Tianyu authored Ben Hutchings committed
Showing with 3 additions and 1 deletion.
  1. +3 −1 drivers/acpi/ac.c
4 drivers/acpi/ac.c
@@ -292,7 +292,9 @@ static int acpi_ac_add(struct acpi_device *device)
ac-> = ac_props;
ac->charger.num_properties = ARRAY_SIZE(ac_props);
ac->charger.get_property = get_ac_property;
- power_supply_register(&ac->device->dev, &ac->charger);
+ result = power_supply_register(&ac->device->dev, &ac->charger);
+ if (result)
+ goto end;
printk(KERN_INFO PREFIX "%s [%s] (%s)\n",
acpi_device_name(device), acpi_device_bid(device),
Please sign in to comment.
Something went wrong with that request. Please try again.