diff mbox series

[v1,1/1] gpiolib: Use sysfs_emit() in "show" functions

Message ID 20210518120917.30336-1-andriy.shevchenko@linux.intel.com
State Accepted
Commit 9e23bf6b00fd060d9a6fdf8a43f427d09992a21d
Headers show
Series [v1,1/1] gpiolib: Use sysfs_emit() in "show" functions | expand

Commit Message

Andy Shevchenko May 18, 2021, 12:09 p.m. UTC
The sysfs_emit() function was introduced to make it less ambiguous
which function is preferred when writing to the output buffer in
a "show" callback [1].

Convert the GPIO library sysfs interface from sprintf() to sysfs_emit()
accordingly, as the latter is aware of the PAGE_SIZE buffer and correctly
returns the number of bytes written into the buffer.

No functional change intended.

[1] Documentation/filesystems/sysfs.rst

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/gpio/gpiolib-sysfs.c | 27 ++++++++++-----------------
 1 file changed, 10 insertions(+), 17 deletions(-)

Comments

Bartosz Golaszewski May 21, 2021, 12:55 p.m. UTC | #1
On Tue, May 18, 2021 at 2:09 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>

> The sysfs_emit() function was introduced to make it less ambiguous

> which function is preferred when writing to the output buffer in

> a "show" callback [1].

>

> Convert the GPIO library sysfs interface from sprintf() to sysfs_emit()

> accordingly, as the latter is aware of the PAGE_SIZE buffer and correctly

> returns the number of bytes written into the buffer.

>

> No functional change intended.

>

> [1] Documentation/filesystems/sysfs.rst

>

> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

> ---

>  drivers/gpio/gpiolib-sysfs.c | 27 ++++++++++-----------------

>  1 file changed, 10 insertions(+), 17 deletions(-)

>

> diff --git a/drivers/gpio/gpiolib-sysfs.c b/drivers/gpio/gpiolib-sysfs.c

> index 7c5afd999210..d836aba91d3c 100644

> --- a/drivers/gpio/gpiolib-sysfs.c

> +++ b/drivers/gpio/gpiolib-sysfs.c

> @@ -66,9 +66,7 @@ static ssize_t direction_show(struct device *dev,

>         mutex_lock(&data->mutex);

>

>         gpiod_get_direction(desc);

> -       status = sprintf(buf, "%s\n",

> -                       test_bit(FLAG_IS_OUT, &desc->flags)

> -                               ? "out" : "in");

> +       status = sysfs_emit(buf, "%s\n", test_bit(FLAG_IS_OUT, &desc->flags) ? "out" : "in");

>

>         mutex_unlock(&data->mutex);

>

> @@ -109,13 +107,9 @@ static ssize_t value_show(struct device *dev,

>         mutex_lock(&data->mutex);

>

>         status = gpiod_get_value_cansleep(desc);

> -       if (status < 0)

> -               goto err;

> +       if (status >= 0)

> +               status = sysfs_emit(buf, "%zd\n", status);

>

> -       buf[0] = '0' + status;

> -       buf[1] = '\n';

> -       status = 2;

> -err:

>         mutex_unlock(&data->mutex);

>

>         return status;

> @@ -249,11 +243,11 @@ static ssize_t edge_show(struct device *dev,

>         mutex_lock(&data->mutex);

>

>         for (i = 0; i < ARRAY_SIZE(trigger_types); i++) {

> -               if (data->irq_flags == trigger_types[i].flags) {

> -                       status = sprintf(buf, "%s\n", trigger_types[i].name);

> +               if (data->irq_flags == trigger_types[i].flags)

>                         break;

> -               }

>         }

> +       if (i < ARRAY_SIZE(trigger_types))

> +               status = sysfs_emit(buf, "%s\n", trigger_types[i].name);

>

>         mutex_unlock(&data->mutex);

>

> @@ -333,8 +327,7 @@ static ssize_t active_low_show(struct device *dev,

>

>         mutex_lock(&data->mutex);

>

> -       status = sprintf(buf, "%d\n",

> -                               !!test_bit(FLAG_ACTIVE_LOW, &desc->flags));

> +       status = sysfs_emit(buf, "%d\n", !!test_bit(FLAG_ACTIVE_LOW, &desc->flags));

>

>         mutex_unlock(&data->mutex);

>

> @@ -412,7 +405,7 @@ static ssize_t base_show(struct device *dev,

>  {

>         const struct gpio_chip  *chip = dev_get_drvdata(dev);

>

> -       return sprintf(buf, "%d\n", chip->base);

> +       return sysfs_emit(buf, "%d\n", chip->base);

>  }

>  static DEVICE_ATTR_RO(base);

>

> @@ -421,7 +414,7 @@ static ssize_t label_show(struct device *dev,

>  {

>         const struct gpio_chip  *chip = dev_get_drvdata(dev);

>

> -       return sprintf(buf, "%s\n", chip->label ? : "");

> +       return sysfs_emit(buf, "%s\n", chip->label ?: "");

>  }

>  static DEVICE_ATTR_RO(label);

>

> @@ -430,7 +423,7 @@ static ssize_t ngpio_show(struct device *dev,

>  {

>         const struct gpio_chip  *chip = dev_get_drvdata(dev);

>

> -       return sprintf(buf, "%u\n", chip->ngpio);

> +       return sysfs_emit(buf, "%u\n", chip->ngpio);

>  }

>  static DEVICE_ATTR_RO(ngpio);

>

> --

> 2.30.2

>


Applied, thanks!

Bartosz
diff mbox series

Patch

diff --git a/drivers/gpio/gpiolib-sysfs.c b/drivers/gpio/gpiolib-sysfs.c
index 7c5afd999210..d836aba91d3c 100644
--- a/drivers/gpio/gpiolib-sysfs.c
+++ b/drivers/gpio/gpiolib-sysfs.c
@@ -66,9 +66,7 @@  static ssize_t direction_show(struct device *dev,
 	mutex_lock(&data->mutex);
 
 	gpiod_get_direction(desc);
-	status = sprintf(buf, "%s\n",
-			test_bit(FLAG_IS_OUT, &desc->flags)
-				? "out" : "in");
+	status = sysfs_emit(buf, "%s\n", test_bit(FLAG_IS_OUT, &desc->flags) ? "out" : "in");
 
 	mutex_unlock(&data->mutex);
 
@@ -109,13 +107,9 @@  static ssize_t value_show(struct device *dev,
 	mutex_lock(&data->mutex);
 
 	status = gpiod_get_value_cansleep(desc);
-	if (status < 0)
-		goto err;
+	if (status >= 0)
+		status = sysfs_emit(buf, "%zd\n", status);
 
-	buf[0] = '0' + status;
-	buf[1] = '\n';
-	status = 2;
-err:
 	mutex_unlock(&data->mutex);
 
 	return status;
@@ -249,11 +243,11 @@  static ssize_t edge_show(struct device *dev,
 	mutex_lock(&data->mutex);
 
 	for (i = 0; i < ARRAY_SIZE(trigger_types); i++) {
-		if (data->irq_flags == trigger_types[i].flags) {
-			status = sprintf(buf, "%s\n", trigger_types[i].name);
+		if (data->irq_flags == trigger_types[i].flags)
 			break;
-		}
 	}
+	if (i < ARRAY_SIZE(trigger_types))
+		status = sysfs_emit(buf, "%s\n", trigger_types[i].name);
 
 	mutex_unlock(&data->mutex);
 
@@ -333,8 +327,7 @@  static ssize_t active_low_show(struct device *dev,
 
 	mutex_lock(&data->mutex);
 
-	status = sprintf(buf, "%d\n",
-				!!test_bit(FLAG_ACTIVE_LOW, &desc->flags));
+	status = sysfs_emit(buf, "%d\n", !!test_bit(FLAG_ACTIVE_LOW, &desc->flags));
 
 	mutex_unlock(&data->mutex);
 
@@ -412,7 +405,7 @@  static ssize_t base_show(struct device *dev,
 {
 	const struct gpio_chip	*chip = dev_get_drvdata(dev);
 
-	return sprintf(buf, "%d\n", chip->base);
+	return sysfs_emit(buf, "%d\n", chip->base);
 }
 static DEVICE_ATTR_RO(base);
 
@@ -421,7 +414,7 @@  static ssize_t label_show(struct device *dev,
 {
 	const struct gpio_chip	*chip = dev_get_drvdata(dev);
 
-	return sprintf(buf, "%s\n", chip->label ? : "");
+	return sysfs_emit(buf, "%s\n", chip->label ?: "");
 }
 static DEVICE_ATTR_RO(label);
 
@@ -430,7 +423,7 @@  static ssize_t ngpio_show(struct device *dev,
 {
 	const struct gpio_chip	*chip = dev_get_drvdata(dev);
 
-	return sprintf(buf, "%u\n", chip->ngpio);
+	return sysfs_emit(buf, "%u\n", chip->ngpio);
 }
 static DEVICE_ATTR_RO(ngpio);