Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4c41d3ad6544f1c9aec37c441af04f5d0ad3a731
Commit:     4c41d3ad6544f1c9aec37c441af04f5d0ad3a731
Parent:     dbeeb816e805091e7cfc03baf36dc40b4adb2bbd
Author:     Roland Dreier <[EMAIL PROTECTED]>
AuthorDate: Wed Nov 7 15:09:09 2007 -0800
Committer:  Len Brown <[EMAIL PROTECTED](none)>
CommitDate: Thu Nov 8 15:08:15 2007 -0500

    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 <[EMAIL PROTECTED]>
    Acked-by: Alexey Starikovskiy <[EMAIL PROTECTED]>
    Signed-off-by: Len Brown <[EMAIL PROTECTED](none)>
---
 drivers/acpi/battery.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index c2ce0ad..cbb27b4 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -152,6 +152,8 @@ static int acpi_battery_get_property(struct power_supply 
*psy,
                        val->intval = POWER_SUPPLY_STATUS_CHARGING;
                else if (battery->state == 0)
                        val->intval = POWER_SUPPLY_STATUS_FULL;
+               else
+                       val->intval = POWER_SUPPLY_STATUS_UNKNOWN;
                break;
        case POWER_SUPPLY_PROP_PRESENT:
                val->intval = acpi_battery_present(battery);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to