Re: [PATCH] iio: hid-sensor: fix return of -EINVAL on invalid values in ret or value

From: Srinivas Pandruvada
Date: Wed Apr 26 2017 - 09:55:57 EST


On Wed, 2017-04-26 at 07:32 +0100, Jonathan Cameron wrote:
> On 19/04/17 15:35, Colin King wrote:
> >
> > From: Colin Ian King <colin.king@xxxxxxxxxxxxx>
> >
> > Ensure that when an invalid value in ret or value is found -EINVAL
> > is returned. A previous commit broke the way the return error is
> > being returned and instead caused the return code in ret to be
> > re-assigned rather than be returned.
> >
> > Fixes: 5d9854eaea776 ("iio: hid-sensor: Store restore poll and
> > hysteresis on S3")
> > Signed-off-by: Colin Ian King <colin.king@xxxxxxxxxxxxx>
> Given the 'fun' we have had with this on recently Srinivas, could you
> sanity check what looks like an obviously correct patch?
Sorry for not paying enough attention to this patch.
If the set_feature() fails, the get_feature will also fail as only time
they will fail if the element is not supported. Invalid values are
silently rejected or in some hubs caps to nearest good value.

But patch itself is fine, but not an urgent one. It can go with normal
release cycle.

Thanks,
Srinivas

>
> I'm being overly paranoid for a while ;)
>
> Jonathan
> >
> > ---
> > Âdrivers/iio/common/hid-sensors/hid-sensor-attributes.c | 4 ++--
> > Â1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
> > b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
> > index 1c0874cdf665..aeb09a85d7a8 100644
> > --- a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
> > +++ b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
> > @@ -230,7 +230,7 @@ int hid_sensor_write_samp_freq_value(struct
> > hid_sensor_common *st,
> > Â ret = sensor_hub_set_feature(st->hsdev, st-
> > >poll.report_id,
> > Â ÂÂÂÂÂst->poll.index,
> > sizeof(value), &value);
> > Â if (ret < 0 || value < 0)
> > - ret = -EINVAL;
> > + return -EINVAL;
> > Â
> > Â ret = sensor_hub_get_feature(st->hsdev,
> > Â ÂÂÂÂÂst->poll.report_id,
> > @@ -283,7 +283,7 @@ int hid_sensor_write_raw_hyst_value(struct
> > hid_sensor_common *st,
> > Â ÂÂÂÂÂst->sensitivity.index,
> > sizeof(value),
> > Â ÂÂÂÂÂ&value);
> > Â if (ret < 0 || value < 0)
> > - ret = -EINVAL;
> > + return -EINVAL;
> > Â
> > Â ret = sensor_hub_get_feature(st->hsdev,
> > Â ÂÂÂÂÂst->sensitivity.report_id,
> >