On Sat, May 6, 2017 at 12:33 AM, Sudip Mukherjee <sudipm.mukher...@gmail.com> wrote: > It is possible to update the backlight power and the brightness using > the sysfs and on writing it either returns the count or if the callback > function does not exist then returns the error code 'ENXIO'. > > We have a situation where the userspace client is writing to the sysfs > to update the power and since the callback function exists the client > receives the return value as count and considers the operation to be > successful. That is correct as the write to the sysfs was successful. > But there is no way to know if the actual operation was done or not. > > backlight_update_status() returns the error code if it fails. Pass that > to the userspace client who is trying to update the power so that the > client knows that the operation failed. > > This is not a change of ABI as the userspace expects an error of ENXIO, > after this patch the range of errors that are returned to the userspace > will increase.
One nit. > @@ -143,12 +143,16 @@ static ssize_t bl_power_store(struct device *dev, > struct device_attribute *attr, > rc = -ENXIO; > mutex_lock(&bd->ops_lock); > if (bd->ops) { > + rc = 0; You may remove this... > pr_debug("set power to %lu\n", power); > if (bd->props.power != power) { > + old_power = bd->props.power; > bd->props.power = power; > - backlight_update_status(bd); > + rc = backlight_update_status(bd); > + if (rc) > + bd->props.power = old_power; > } > - rc = count; > + rc = rc ? rc : count; ... and replace this by } else rc = count; -- With Best Regards, Andy Shevchenko