iio: 104-quad-8: Fix off-by-one errors when addressing IOR
PATCH 1/1 iio: 104-quad-8: Fix off-by-one errors when addressing IOR
The Input/Output Control register (IOR) is offset by 1 from the respective channel data register. This patch fixes off-by-one errors when attempting to write to a channel IOR where the base address was not properly offset.
Fixes 28e5d3bb0325 ("iio: 104-quad-8: Add IIO support for the ACCES 104-QUAD-8")
Signed-off-by William Breathitt Gray <[email protected]>
--- drivers/iio/counter/104-quad-8.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/iio/counter/104-quad-8.c +2 -2
@@ -153,7 +153,7 @@ static int quad8_write_raw(struct iio_dev *indio_dev, ior_cfg = val | priv->preset_enable[chan->channel] <<1 ;/* Load I/O control configuration */ -outb (0x40 | ior_cfg, base_offset); +outb (0x40 | ior_cfg, base_offset +1 );return 0 ;case IIO_CHAN_INFO_SCALE :
@@ -241,7 +241,7 @@ static ssize_t quad8_write_set_to_preset_on_index(struct iio_dev *indio_dev, size_t len) {struct quad8_iio *const priv =iio_priv (indio_dev); -const int base_offset = priv->base +2 * chan->channel; +const int base_offset = priv->base +2 * chan->channel +1 ;bool preset_enable;int ret;unsigned int ior_cfg;
Signature · 1 line
2.10.2
Quoted 7 lines · William Breathitt Gray
The Input/Output Control register (IOR) is offset by 1 from the respective channel data register. This patch fixes off-by-one errors when attempting to write to a channel IOR where the base address was not properly offset.
Fixes 28e5d3bb0325 ("iio: 104-quad-8: Add IIO support for the ACCES 104-QUAD-8")Signed-off-by William Breathitt Gray <[email protected]>
Applied to the fixes-togreg-post-rc1 branch and marked for stable.
Will push out when I next have a net connection and remember!
Jonathan
Quoted 27 lines
--- drivers/iio/counter/104-quad-8.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/iio/counter/104-quad-8.c +2
-2@@ -153,7 +153,7 @@ static int quad8_write_raw(struct iio_dev *indio_dev, ior_cfg = val | priv->preset_enable[chan->channel] <<1 ;/* Load I/O control configuration */ -outb (0x40 | ior_cfg, base_offset); +outb (0x40 | ior_cfg, base_offset +1 );return 0 ;case IIO_CHAN_INFO_SCALE :@@ -241,7 +241,7 @@ static ssize_t quad8_write_set_to_preset_on_index(struct iio_dev *indio_dev, size_t len) {struct quad8_iio *const priv =iio_priv (indio_dev); -const int base_offset = priv->base +2 * chan->channel; +const int base_offset = priv->base +2 * chan->channel +1 ;bool preset_enable;int ret;unsigned int ior_cfg;