2022-09-28 13:54:40

by Jules Irenge

[permalink] [raw]
Subject: [PATCH v2] comedi: Convert snprintf() to sysfs_emit()

Coccinnelle reports a warning
Warning: Use scnprintf or sprintf

Adding to that, there has been a slow migration from snprintf to scnprintf.
This LWN article explains the rationale for this change

https: //lwn.net/Articles/69419/
ie. snprintf() returns what *would* be the resulting length,
while scnprintf() returns the actual length.

However following the advice on
https://www.kernel.org/doc/html/latest/filesystems/sysfs.html

For show(device *...) functions we should only use sysfs_emit() or sysfs_emit_at()
especially when formatting the value to be returned to user space.

Hence here
We convert to sysfs_emit() that even does better and shorten the code
using the same rationale of scnprintf()

Signed-off-by: Jules Irenge <[email protected]>
---

v2: Replace scnprintf() with sysfs_emit()

drivers/comedi/comedi_fops.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/comedi/comedi_fops.c b/drivers/comedi/comedi_fops.c
index 55a0cae04b8d..a6017fafcb2a 100644
--- a/drivers/comedi/comedi_fops.c
+++ b/drivers/comedi/comedi_fops.c
@@ -396,7 +396,7 @@ static ssize_t max_read_buffer_kb_show(struct device *csdev,
mutex_unlock(&dev->mutex);

comedi_dev_put(dev);
- return snprintf(buf, PAGE_SIZE, "%u\n", size);
+ return sysfs_emit(buf, "%u\n", size);
}

static ssize_t max_read_buffer_kb_store(struct device *csdev,
--
2.37.3


2022-09-30 12:43:51

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v2] comedi: Convert snprintf() to sysfs_emit()

On Wed, Sep 28, 2022 at 02:23:41PM +0100, Jules Irenge wrote:
> Coccinnelle reports a warning
> Warning: Use scnprintf or sprintf
>
> Adding to that, there has been a slow migration from snprintf to scnprintf.
> This LWN article explains the rationale for this change
>
> https: //lwn.net/Articles/69419/
> ie. snprintf() returns what *would* be the resulting length,
> while scnprintf() returns the actual length.

None of this is needed or relevant for this change.

>
> However following the advice on
> https://www.kernel.org/doc/html/latest/filesystems/sysfs.html
>
> For show(device *...) functions we should only use sysfs_emit() or sysfs_emit_at()
> especially when formatting the value to be returned to user space.
>
> Hence here
> We convert to sysfs_emit() that even does better and shorten the code
> using the same rationale of scnprintf()
>
> Signed-off-by: Jules Irenge <[email protected]>
> ---
>
> v2: Replace scnprintf() with sysfs_emit()
>
> drivers/comedi/comedi_fops.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/comedi/comedi_fops.c b/drivers/comedi/comedi_fops.c
> index 55a0cae04b8d..a6017fafcb2a 100644
> --- a/drivers/comedi/comedi_fops.c
> +++ b/drivers/comedi/comedi_fops.c
> @@ -396,7 +396,7 @@ static ssize_t max_read_buffer_kb_show(struct device *csdev,
> mutex_unlock(&dev->mutex);
>
> comedi_dev_put(dev);
> - return snprintf(buf, PAGE_SIZE, "%u\n", size);
> + return sysfs_emit(buf, "%u\n", size);
> }
>
> static ssize_t max_read_buffer_kb_store(struct device *csdev,

Does not apply to my tree :(

thanks,

greg k-h