• R
    ACPI / Battery: Return -ENODEV for unknown values in get_property() · a1b4bd69
    Rafael J. Wysocki 提交于
    The function acpi_battery_get_property() is called by the
    power supply framework's function power_supply_show_property()
    implementing the sysfs interface for power supply devices as the
    ACPI battery driver's ->get_property() callback.  Thus it is supposed
    to return error code if the value of the given property is unknown.
    Unfortunately, however, it returns 0 in those cases and puts a
    wrong (negative) value into the intval field of the
    union power_supply_propval object provided by
    power_supply_show_property().  In consequence, wrong negative
    values are read by user space from the battery's sysfs files.
    
    Fix this by making acpi_battery_get_property() return -ENODEV
    for properties with unknown values (-ENODEV is returned, because
    power_supply_uevent() returns with error for any other error code
    returned by power_supply_show_property()).
    Reported-and-tested-by: NSitsofe Wheeler <sitsofe@yahoo.com>
    Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: NLen Brown <len.brown@intel.com>
    a1b4bd69
battery.c 28.8 KB