[PATCH] fs/xfs: use scnprintf() in show functions

Pranav Tyagi posted 1 patch 3 months, 3 weeks ago
fs/xfs/xfs_sysfs.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[PATCH] fs/xfs: use scnprintf() in show functions
Posted by Pranav Tyagi 3 months, 3 weeks ago
Replace all snprintf() instances with scnprintf(). snprintf() returns
the number of bytes that would have been written had there been enough
space. For sysfs attributes, snprintf() should not be used for the
show() method. Instead use scnprintf() which returns the number of bytes
actually written.

Signed-off-by: Pranav Tyagi <pranav.tyagi03@gmail.com>
---
 fs/xfs/xfs_sysfs.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/fs/xfs/xfs_sysfs.c b/fs/xfs/xfs_sysfs.c
index 7a5c5ef2db92..f7206e3edea2 100644
--- a/fs/xfs/xfs_sysfs.c
+++ b/fs/xfs/xfs_sysfs.c
@@ -257,7 +257,7 @@ larp_show(
 	struct kobject	*kobject,
 	char		*buf)
 {
-	return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.larp);
+	return scnprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.larp);
 }
 XFS_SYSFS_ATTR_RW(larp);
 
@@ -283,7 +283,7 @@ bload_leaf_slack_show(
 	struct kobject	*kobject,
 	char		*buf)
 {
-	return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.bload_leaf_slack);
+	return scnprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.bload_leaf_slack);
 }
 XFS_SYSFS_ATTR_RW(bload_leaf_slack);
 
@@ -309,7 +309,7 @@ bload_node_slack_show(
 	struct kobject	*kobject,
 	char		*buf)
 {
-	return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.bload_node_slack);
+	return scnprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.bload_node_slack);
 }
 XFS_SYSFS_ATTR_RW(bload_node_slack);
 
-- 
2.49.0
Re: [PATCH] fs/xfs: use scnprintf() in show functions
Posted by Greg KH 3 months, 3 weeks ago
On Mon, Jun 16, 2025 at 04:33:13PM +0530, Pranav Tyagi wrote:
> Replace all snprintf() instances with scnprintf(). snprintf() returns
> the number of bytes that would have been written had there been enough
> space. For sysfs attributes, snprintf() should not be used for the
> show() method. Instead use scnprintf() which returns the number of bytes
> actually written.

No, please use sysfs_emit() if you really want to change this.

> 
> Signed-off-by: Pranav Tyagi <pranav.tyagi03@gmail.com>
> ---
>  fs/xfs/xfs_sysfs.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/xfs/xfs_sysfs.c b/fs/xfs/xfs_sysfs.c
> index 7a5c5ef2db92..f7206e3edea2 100644
> --- a/fs/xfs/xfs_sysfs.c
> +++ b/fs/xfs/xfs_sysfs.c
> @@ -257,7 +257,7 @@ larp_show(
>  	struct kobject	*kobject,
>  	char		*buf)
>  {
> -	return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.larp);

There is nothing wrong with the original code here, you could use
sprintf() and it too is ok.  So this type of change is not needed.  But
again, if you really want to, use sysfs_emit() instead.

Same for all the other show() callback changes you just made.

thanks,

greg k-h
Re: [PATCH] fs/xfs: use scnprintf() in show functions
Posted by Pranav Tyagi 3 months, 3 weeks ago
On Mon, Jun 16, 2025 at 7:50 PM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> On Mon, Jun 16, 2025 at 04:33:13PM +0530, Pranav Tyagi wrote:
> > Replace all snprintf() instances with scnprintf(). snprintf() returns
> > the number of bytes that would have been written had there been enough
> > space. For sysfs attributes, snprintf() should not be used for the
> > show() method. Instead use scnprintf() which returns the number of bytes
> > actually written.
>
> No, please use sysfs_emit() if you really want to change this.
>
> >
> > Signed-off-by: Pranav Tyagi <pranav.tyagi03@gmail.com>
> > ---
> >  fs/xfs/xfs_sysfs.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/fs/xfs/xfs_sysfs.c b/fs/xfs/xfs_sysfs.c
> > index 7a5c5ef2db92..f7206e3edea2 100644
> > --- a/fs/xfs/xfs_sysfs.c
> > +++ b/fs/xfs/xfs_sysfs.c
> > @@ -257,7 +257,7 @@ larp_show(
> >       struct kobject  *kobject,
> >       char            *buf)
> >  {
> > -     return snprintf(buf, PAGE_SIZE, "%d\n", xfs_globals.larp);
>
> There is nothing wrong with the original code here, you could use
> sprintf() and it too is ok.  So this type of change is not needed.  But
> again, if you really want to, use sysfs_emit() instead.
>
> Same for all the other show() callback changes you just made.
>
> thanks,
>
> greg k-h

Hi,

Thanks for the feedback. I understand the original code is
perfectly fine. All these show callback changes were intended as
cleanups. I'll drop these patches. And will use sysfs_emit() if
I ever have to.

Regards
Pranav Tyagi