ACPI: Always return valid 'status' from acpi_battery_get_property()
authorRoland Dreier <roland@digitalvampire.org>
Wed, 7 Nov 2007 23:09:09 +0000 (15:09 -0800)
committerLen Brown <lenb@t61.(none)>
Thu, 8 Nov 2007 20:08:15 +0000 (15:08 -0500)
commit4c41d3ad6544f1c9aec37c441af04f5d0ad3a731
treea219cf7ae81282beba10c821e2179326f8429939
parentdbeeb816e805091e7cfc03baf36dc40b4adb2bbd
ACPI: Always return valid 'status' from acpi_battery_get_property()

If a battery is at a critical charge level and not being charged or
discharged, then the ACPI _BST method will return a state of 4, and
the current acpi_battery_get_property() code will not set any property
value for POWER_SUPPLY_PROP_STATUS.  This will cause an oops in
power_supply_show_property() when it reads off the end of the
status_text array.  This actually was causing a 100% reproducible
crash on boot on my laptop with two batteries, when one battery was
completely drained and the laptop was not plugged in.

Fix this by making sure acpi_battery_get_property() returns
POWER_SUPPLY_STATUS_UNKNOWN for any battery state it doesn't already
handle explicitly.  There doesn't seem to be any status enum value
defined that makes more sense than 'unknown' for a battery at a
critical charge level.

Signed-off-by: Roland Dreier <roland@digitalvampire.org>
Acked-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <lenb@t61.(none)>
drivers/acpi/battery.c