Skip to contentSkip to conversation

patch "iio: fix iio_format_avail_range() printing for none IIO_VAL_INT" added to char-misc-testing

PATCH [email protected] 1 participant 1 message Jul 22, 2022

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

iio: fix iio_format_avail_range() printing for none IIO_VAL_INT

to my char-misc git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
in the char-misc-testing branch.

The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)

The patch will be merged to the char-misc-next branch sometime soon, after it passes testing, and the merge window is open.

If you have any questions about this process, please let me know.

From 5e1f91850365de55ca74945866c002fda8f00331 Mon Sep 17 00:00:00 2001
From: Fawzi Khaber <[email protected]>
Date: Mon, 18 Jul 2022 15:07:06 +0200
Subject: iio: fix iio_format_avail_range() printing for none IIO_VAL_INT

iio_format_avail_range() should print range as follow [min, step, max], so the function was previously calling iio_format_list() with length = 3, length variable refers to the array size of values not the number of elements. In case of non IIO_VAL_INT values each element has integer part and decimal part. With length = 3 this would cause premature end of loop and result in printing only one element.

Fixes eda20ba1e25e ("iio: core: Consolidate iio_format_avail_{list,range}()")
---
 drivers/iio/industrialio-core.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)
drivers/iio/industrialio-core.c +17 -1
index 358b909298c0..0f4dbda3b9d3 100644
@@ -812,7 +812,23 @@ static ssize_t iio_format_avail_list(char *buf, const int *vals,
 
 static ssize_t iio_format_avail_range(char *buf, const int *vals, int type)
 {
-	return iio_format_list(buf, vals, type, 3, "[", "]");
+	int length;
+
+	/*
+	 * length refers to the array size , not the number of elements.
+	 * The purpose is to print the range [min , step ,max] so length should
+	 * be 3 in case of int, and 6 for other types.
+	 */
+	switch (type) {
+	case IIO_VAL_INT:
+		length = 3;
+		break;
+	default:
+		length = 6;
+		break;
+	}
+
+	return iio_format_list(buf, vals, type, length, "[", "]");
 }
 
 static ssize_t iio_read_channel_info_avail(struct device *dev,
Signature · 1 line
2.37.1