power_supply: Ignore -ENODATA errors when generating uevents
authorLars-Peter Clausen <lars@metafoo.de>
Sat, 8 Jan 2011 18:12:26 +0000 (19:12 +0100)
committerLars-Peter Clausen <lars@metafoo.de>
Tue, 22 Feb 2011 05:47:52 +0000 (06:47 +0100)
Sometimes a driver can not report a meaningful value for a certain property
and returns -ENODATA.

Currently when generating a uevent and a property return -ENODATA it is
treated as an error an no uevent is generated at all. This is not an
desirable behavior.

This patch adds a special case for -ENODATA and ignores properties which
return this error code when generating the uevent.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Tested-by: Grazvydas Ignotas <notasas@gmail.com>
drivers/power/power_supply_sysfs.c

index cd1f90754a3a301ebdbdd71da8bac4ad8265a580..605514afc29f20029032ef2ab94cc1b006e8ffa3 100644 (file)
@@ -270,7 +270,7 @@ int power_supply_uevent(struct device *dev, struct kobj_uevent_env *env)
                attr = &power_supply_attrs[psy->properties[j]];
 
                ret = power_supply_show_property(dev, attr, prop_buf);
-               if (ret == -ENODEV) {
+               if (ret == -ENODEV || ret == -ENODATA) {
                        /* When a battery is absent, we expect -ENODEV. Don't abort;
                           send the uevent with at least the the PRESENT=0 property */
                        ret = 0;