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

Jules Irenge posted 1 patch 1 year, 7 months ago
drivers/comedi/comedi_fops.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH v2] comedi: Convert snprintf() to sysfs_emit()
Posted by Jules Irenge 1 year, 7 months ago
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 <jules.irenge@postgrad.manchester.ac.uk>
---

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
Re: [PATCH v2] comedi: Convert snprintf() to sysfs_emit()
Posted by Greg KH 1 year, 6 months ago
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 <jules.irenge@postgrad.manchester.ac.uk>
> ---
> 
> 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