Vlad Dogaru schrieb am 30.06.2015 um 13:20: > Fix error handling so that we can power the chip down even if a raw read > fails. > > Reported-by: Hartmut Knaack <knaack.h@xxxxxx> > Signed-off-by: Vlad Dogaru <vlad.dogaru@xxxxxxxxx> Acked-by: Hartmut Knaack <knaack.h@xxxxxx> > --- > drivers/iio/proximity/sx9500.c | 16 +++++++++------- > 1 file changed, 9 insertions(+), 7 deletions(-) > > diff --git a/drivers/iio/proximity/sx9500.c b/drivers/iio/proximity/sx9500.c > index 2042e37..ba1cbbe 100644 > --- a/drivers/iio/proximity/sx9500.c > +++ b/drivers/iio/proximity/sx9500.c > @@ -329,27 +329,29 @@ static int sx9500_read_proximity(struct sx9500_data *data, > else > ret = sx9500_wait_for_sample(data); > > - if (ret < 0) > - return ret; > - > mutex_lock(&data->mutex); > > - ret = sx9500_read_prox_data(data, chan, val); > if (ret < 0) > - goto out; > + goto out_dec_data_rdy; > > - ret = sx9500_dec_chan_users(data, chan->channel); > + ret = sx9500_read_prox_data(data, chan, val); > if (ret < 0) > - goto out; > + goto out_dec_data_rdy; > > ret = sx9500_dec_data_rdy_users(data); > if (ret < 0) > + goto out_dec_chan; > + > + ret = sx9500_dec_chan_users(data, chan->channel); > + if (ret < 0) > goto out; > > ret = IIO_VAL_INT; > > goto out; > > +out_dec_data_rdy: > + sx9500_dec_data_rdy_users(data); > out_dec_chan: > sx9500_dec_chan_users(data, chan->channel); > out: > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html