[PATCH] iio: imu: bno055: fix BNO055_SCAN_CH_COUNT off by one

David Lechner posted 1 patch 1 month, 2 weeks ago
drivers/iio/imu/bno055/bno055.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] iio: imu: bno055: fix BNO055_SCAN_CH_COUNT off by one
Posted by David Lechner 1 month, 2 weeks ago
Fix an off-by-one error in the BNO055_SCAN_CH_COUNT macro. The count
is derived by taking the difference of the last and first register
addresses, dividing by the size of each channel (2 bytes). It needs to
also add 1 to account for the fact that the count is inclusive of both
the first and last channels.

Thanks to the aligned_s64 timestamp field, there was already extra
padding in the buffer, so there were no runtime issues caused by this
bug.

Signed-off-by: David Lechner <dlechner@baylibre.com>
---
I didn't put a Fixes: tag since this there were no runtime bugs. Didn't
know if this was worth backporting or not.
---
 drivers/iio/imu/bno055/bno055.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iio/imu/bno055/bno055.c b/drivers/iio/imu/bno055/bno055.c
index 303bc308f80a..c96fec2ebb3e 100644
--- a/drivers/iio/imu/bno055/bno055.c
+++ b/drivers/iio/imu/bno055/bno055.c
@@ -64,7 +64,7 @@
 #define BNO055_GRAVITY_DATA_X_LSB_REG	0x2E
 #define BNO055_GRAVITY_DATA_Y_LSB_REG	0x30
 #define BNO055_GRAVITY_DATA_Z_LSB_REG	0x32
-#define BNO055_SCAN_CH_COUNT ((BNO055_GRAVITY_DATA_Z_LSB_REG - BNO055_ACC_DATA_X_LSB_REG) / 2)
+#define BNO055_SCAN_CH_COUNT ((BNO055_GRAVITY_DATA_Z_LSB_REG - BNO055_ACC_DATA_X_LSB_REG) / 2 + 1)
 #define BNO055_TEMP_REG			0x34
 #define BNO055_CALIB_STAT_REG		0x35
 #define BNO055_CALIB_STAT_MAGN_SHIFT 0

---
base-commit: 0713b26190addfa3a774b386c8658952ef9f7faf
change-id: 20260214-iio-imu-bno055-count-off-by-one-3b67a0caaaf6

Best regards,
-- 
David Lechner <dlechner@baylibre.com>
Re: [PATCH] iio: imu: bno055: fix BNO055_SCAN_CH_COUNT off by one
Posted by Jonathan Cameron 1 month ago
On Sat, 14 Feb 2026 16:33:54 -0600
David Lechner <dlechner@baylibre.com> wrote:

> Fix an off-by-one error in the BNO055_SCAN_CH_COUNT macro. The count
> is derived by taking the difference of the last and first register
> addresses, dividing by the size of each channel (2 bytes). It needs to
> also add 1 to account for the fact that the count is inclusive of both
> the first and last channels.
> 
> Thanks to the aligned_s64 timestamp field, there was already extra
> padding in the buffer, so there were no runtime issues caused by this
> bug.
> 
> Signed-off-by: David Lechner <dlechner@baylibre.com>
> ---
> I didn't put a Fixes: tag since this there were no runtime bugs. Didn't
> know if this was worth backporting or not.
I took the view that it isn't obvious that this is not a bug and hence
it might confuse readers in the future.  So I gave it fixes tag.
Still I didn't +CC stable as agree there is no urgency to backport.

Applied to the fixes-togreg branch of iio.git.

Thanks,

Jonathan

> ---
>  drivers/iio/imu/bno055/bno055.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/imu/bno055/bno055.c b/drivers/iio/imu/bno055/bno055.c
> index 303bc308f80a..c96fec2ebb3e 100644
> --- a/drivers/iio/imu/bno055/bno055.c
> +++ b/drivers/iio/imu/bno055/bno055.c
> @@ -64,7 +64,7 @@
>  #define BNO055_GRAVITY_DATA_X_LSB_REG	0x2E
>  #define BNO055_GRAVITY_DATA_Y_LSB_REG	0x30
>  #define BNO055_GRAVITY_DATA_Z_LSB_REG	0x32
> -#define BNO055_SCAN_CH_COUNT ((BNO055_GRAVITY_DATA_Z_LSB_REG - BNO055_ACC_DATA_X_LSB_REG) / 2)
> +#define BNO055_SCAN_CH_COUNT ((BNO055_GRAVITY_DATA_Z_LSB_REG - BNO055_ACC_DATA_X_LSB_REG) / 2 + 1)
>  #define BNO055_TEMP_REG			0x34
>  #define BNO055_CALIB_STAT_REG		0x35
>  #define BNO055_CALIB_STAT_MAGN_SHIFT 0
> 
> ---
> base-commit: 0713b26190addfa3a774b386c8658952ef9f7faf
> change-id: 20260214-iio-imu-bno055-count-off-by-one-3b67a0caaaf6
> 
> Best regards,