Message ID | 20191101093505.9408-3-alexandru.ardelean@analog.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | iio: adis: cleanups and fixes | expand |
On Fri, 1 Nov 2019 11:34:57 +0200 Alexandru Ardelean <alexandru.ardelean@analog.com> wrote: > The ADIS library functions return zero on success, and negative values for > error. Positive values aren't returned, but we only care about the success > value (which is zero). > > This change is mostly needed so that the compiler won't make any inferences > about some about values being potentially un-initialized. This only > triggers after making some functions inline, because the compiler can > better follow return paths. > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Applied, An observation whilst I was looking at the driver though... It has some cases of goto label; where the label doesn't then do anything in *_initial_setup. Direct returns would be a bit neater. Really minor point but if you happen to be touching that driver again soon nice to tidy up ;) Thanks, Jonathan > --- > drivers/iio/imu/adis16400.c | 22 +++++++++++----------- > 1 file changed, 11 insertions(+), 11 deletions(-) > > diff --git a/drivers/iio/imu/adis16400.c b/drivers/iio/imu/adis16400.c > index 0575ff706bd4..44e46dc96e00 100644 > --- a/drivers/iio/imu/adis16400.c > +++ b/drivers/iio/imu/adis16400.c > @@ -217,16 +217,16 @@ static ssize_t adis16400_show_serial_number(struct file *file, > int ret; > > ret = adis_read_reg_16(&st->adis, ADIS16334_LOT_ID1, &lot1); > - if (ret < 0) > + if (ret) > return ret; > > ret = adis_read_reg_16(&st->adis, ADIS16334_LOT_ID2, &lot2); > - if (ret < 0) > + if (ret) > return ret; > > ret = adis_read_reg_16(&st->adis, ADIS16334_SERIAL_NUMBER, > &serial_number); > - if (ret < 0) > + if (ret) > return ret; > > len = snprintf(buf, sizeof(buf), "%.4x-%.4x-%.4x\n", lot1, lot2, > @@ -249,7 +249,7 @@ static int adis16400_show_product_id(void *arg, u64 *val) > int ret; > > ret = adis_read_reg_16(&st->adis, ADIS16400_PRODUCT_ID, &prod_id); > - if (ret < 0) > + if (ret) > return ret; > > *val = prod_id; > @@ -266,7 +266,7 @@ static int adis16400_show_flash_count(void *arg, u64 *val) > int ret; > > ret = adis_read_reg_16(&st->adis, ADIS16400_FLASH_CNT, &flash_count); > - if (ret < 0) > + if (ret) > return ret; > > *val = flash_count; > @@ -327,7 +327,7 @@ static int adis16334_get_freq(struct adis16400_state *st) > uint16_t t; > > ret = adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t); > - if (ret < 0) > + if (ret) > return ret; > > t >>= ADIS16334_RATE_DIV_SHIFT; > @@ -359,7 +359,7 @@ static int adis16400_get_freq(struct adis16400_state *st) > uint16_t t; > > ret = adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t); > - if (ret < 0) > + if (ret) > return ret; > > sps = (t & ADIS16400_SMPL_PRD_TIME_BASE) ? 52851 : 1638404; > @@ -416,7 +416,7 @@ static int adis16400_set_filter(struct iio_dev *indio_dev, int sps, int val) > } > > ret = adis_read_reg_16(&st->adis, ADIS16400_SENS_AVG, &val16); > - if (ret < 0) > + if (ret) > return ret; > > ret = adis_write_reg_16(&st->adis, ADIS16400_SENS_AVG, > @@ -615,7 +615,7 @@ static int adis16400_read_raw(struct iio_dev *indio_dev, > ret = adis_read_reg_16(&st->adis, > ADIS16400_SENS_AVG, > &val16); > - if (ret < 0) { > + if (ret) { > mutex_unlock(&indio_dev->mlock); > return ret; > } > @@ -626,12 +626,12 @@ static int adis16400_read_raw(struct iio_dev *indio_dev, > *val2 = (ret % 1000) * 1000; > } > mutex_unlock(&indio_dev->mlock); > - if (ret < 0) > + if (ret) > return ret; > return IIO_VAL_INT_PLUS_MICRO; > case IIO_CHAN_INFO_SAMP_FREQ: > ret = st->variant->get_freq(st); > - if (ret < 0) > + if (ret) > return ret; > *val = ret / 1000; > *val2 = (ret % 1000) * 1000;
On Sun, 2019-11-03 at 10:21 +0000, Jonathan Cameron wrote: > On Fri, 1 Nov 2019 11:34:57 +0200 > Alexandru Ardelean <alexandru.ardelean@analog.com> wrote: > > > The ADIS library functions return zero on success, and negative values > > for > > error. Positive values aren't returned, but we only care about the > > success > > value (which is zero). > > > > This change is mostly needed so that the compiler won't make any > > inferences > > about some about values being potentially un-initialized. This only > > triggers after making some functions inline, because the compiler can > > better follow return paths. > > > > Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> > Applied, > > An observation whilst I was looking at the driver though... > > It has some cases of goto label; where the label doesn't then do anything > in *_initial_setup. Direct returns would be a bit neater. > > Really minor point but if you happen to be touching that driver again > soon nice to tidy up ;) As you can probably guess, a lot of cleanups will be coming to the ADIS family & library. So, I'll try to include this into the next cleanup set. I'll try to re-spin the ADIS lock cleanup. We still need to do the devm_ variants + related cleanup. Thanks Alex > > Thanks, > > Jonathan > > > > --- > > drivers/iio/imu/adis16400.c | 22 +++++++++++----------- > > 1 file changed, 11 insertions(+), 11 deletions(-) > > > > diff --git a/drivers/iio/imu/adis16400.c b/drivers/iio/imu/adis16400.c > > index 0575ff706bd4..44e46dc96e00 100644 > > --- a/drivers/iio/imu/adis16400.c > > +++ b/drivers/iio/imu/adis16400.c > > @@ -217,16 +217,16 @@ static ssize_t > > adis16400_show_serial_number(struct file *file, > > int ret; > > > > ret = adis_read_reg_16(&st->adis, ADIS16334_LOT_ID1, &lot1); > > - if (ret < 0) > > + if (ret) > > return ret; > > > > ret = adis_read_reg_16(&st->adis, ADIS16334_LOT_ID2, &lot2); > > - if (ret < 0) > > + if (ret) > > return ret; > > > > ret = adis_read_reg_16(&st->adis, ADIS16334_SERIAL_NUMBER, > > &serial_number); > > - if (ret < 0) > > + if (ret) > > return ret; > > > > len = snprintf(buf, sizeof(buf), "%.4x-%.4x-%.4x\n", lot1, lot2, > > @@ -249,7 +249,7 @@ static int adis16400_show_product_id(void *arg, u64 > > *val) > > int ret; > > > > ret = adis_read_reg_16(&st->adis, ADIS16400_PRODUCT_ID, &prod_id); > > - if (ret < 0) > > + if (ret) > > return ret; > > > > *val = prod_id; > > @@ -266,7 +266,7 @@ static int adis16400_show_flash_count(void *arg, > > u64 *val) > > int ret; > > > > ret = adis_read_reg_16(&st->adis, ADIS16400_FLASH_CNT, > > &flash_count); > > - if (ret < 0) > > + if (ret) > > return ret; > > > > *val = flash_count; > > @@ -327,7 +327,7 @@ static int adis16334_get_freq(struct > > adis16400_state *st) > > uint16_t t; > > > > ret = adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t); > > - if (ret < 0) > > + if (ret) > > return ret; > > > > t >>= ADIS16334_RATE_DIV_SHIFT; > > @@ -359,7 +359,7 @@ static int adis16400_get_freq(struct > > adis16400_state *st) > > uint16_t t; > > > > ret = adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t); > > - if (ret < 0) > > + if (ret) > > return ret; > > > > sps = (t & ADIS16400_SMPL_PRD_TIME_BASE) ? 52851 : 1638404; > > @@ -416,7 +416,7 @@ static int adis16400_set_filter(struct iio_dev > > *indio_dev, int sps, int val) > > } > > > > ret = adis_read_reg_16(&st->adis, ADIS16400_SENS_AVG, &val16); > > - if (ret < 0) > > + if (ret) > > return ret; > > > > ret = adis_write_reg_16(&st->adis, ADIS16400_SENS_AVG, > > @@ -615,7 +615,7 @@ static int adis16400_read_raw(struct iio_dev > > *indio_dev, > > ret = adis_read_reg_16(&st->adis, > > ADIS16400_SENS_AVG, > > &val16); > > - if (ret < 0) { > > + if (ret) { > > mutex_unlock(&indio_dev->mlock); > > return ret; > > } > > @@ -626,12 +626,12 @@ static int adis16400_read_raw(struct iio_dev > > *indio_dev, > > *val2 = (ret % 1000) * 1000; > > } > > mutex_unlock(&indio_dev->mlock); > > - if (ret < 0) > > + if (ret) > > return ret; > > return IIO_VAL_INT_PLUS_MICRO; > > case IIO_CHAN_INFO_SAMP_FREQ: > > ret = st->variant->get_freq(st); > > - if (ret < 0) > > + if (ret) > > return ret; > > *val = ret / 1000; > > *val2 = (ret % 1000) * 1000;
diff --git a/drivers/iio/imu/adis16400.c b/drivers/iio/imu/adis16400.c index 0575ff706bd4..44e46dc96e00 100644 --- a/drivers/iio/imu/adis16400.c +++ b/drivers/iio/imu/adis16400.c @@ -217,16 +217,16 @@ static ssize_t adis16400_show_serial_number(struct file *file, int ret; ret = adis_read_reg_16(&st->adis, ADIS16334_LOT_ID1, &lot1); - if (ret < 0) + if (ret) return ret; ret = adis_read_reg_16(&st->adis, ADIS16334_LOT_ID2, &lot2); - if (ret < 0) + if (ret) return ret; ret = adis_read_reg_16(&st->adis, ADIS16334_SERIAL_NUMBER, &serial_number); - if (ret < 0) + if (ret) return ret; len = snprintf(buf, sizeof(buf), "%.4x-%.4x-%.4x\n", lot1, lot2, @@ -249,7 +249,7 @@ static int adis16400_show_product_id(void *arg, u64 *val) int ret; ret = adis_read_reg_16(&st->adis, ADIS16400_PRODUCT_ID, &prod_id); - if (ret < 0) + if (ret) return ret; *val = prod_id; @@ -266,7 +266,7 @@ static int adis16400_show_flash_count(void *arg, u64 *val) int ret; ret = adis_read_reg_16(&st->adis, ADIS16400_FLASH_CNT, &flash_count); - if (ret < 0) + if (ret) return ret; *val = flash_count; @@ -327,7 +327,7 @@ static int adis16334_get_freq(struct adis16400_state *st) uint16_t t; ret = adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t); - if (ret < 0) + if (ret) return ret; t >>= ADIS16334_RATE_DIV_SHIFT; @@ -359,7 +359,7 @@ static int adis16400_get_freq(struct adis16400_state *st) uint16_t t; ret = adis_read_reg_16(&st->adis, ADIS16400_SMPL_PRD, &t); - if (ret < 0) + if (ret) return ret; sps = (t & ADIS16400_SMPL_PRD_TIME_BASE) ? 52851 : 1638404; @@ -416,7 +416,7 @@ static int adis16400_set_filter(struct iio_dev *indio_dev, int sps, int val) } ret = adis_read_reg_16(&st->adis, ADIS16400_SENS_AVG, &val16); - if (ret < 0) + if (ret) return ret; ret = adis_write_reg_16(&st->adis, ADIS16400_SENS_AVG, @@ -615,7 +615,7 @@ static int adis16400_read_raw(struct iio_dev *indio_dev, ret = adis_read_reg_16(&st->adis, ADIS16400_SENS_AVG, &val16); - if (ret < 0) { + if (ret) { mutex_unlock(&indio_dev->mlock); return ret; } @@ -626,12 +626,12 @@ static int adis16400_read_raw(struct iio_dev *indio_dev, *val2 = (ret % 1000) * 1000; } mutex_unlock(&indio_dev->mlock); - if (ret < 0) + if (ret) return ret; return IIO_VAL_INT_PLUS_MICRO; case IIO_CHAN_INFO_SAMP_FREQ: ret = st->variant->get_freq(st); - if (ret < 0) + if (ret) return ret; *val = ret / 1000; *val2 = (ret % 1000) * 1000;
The ADIS library functions return zero on success, and negative values for error. Positive values aren't returned, but we only care about the success value (which is zero). This change is mostly needed so that the compiler won't make any inferences about some about values being potentially un-initialized. This only triggers after making some functions inline, because the compiler can better follow return paths. Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> --- drivers/iio/imu/adis16400.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-)