[PATCH] ocfs2: replace deprecated simple_strtol with kstrtol

Daniel Yang posted 1 patch 1 year, 2 months ago
There is a newer version of this series
fs/ocfs2/cluster/heartbeat.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[PATCH] ocfs2: replace deprecated simple_strtol with kstrtol
Posted by Daniel Yang 1 year, 2 months ago
The function simple_strtol ignores overflows and has an awkward
interface for error checking. Replace with the recommended kstrtol
function leads to clearer error checking and safer conversions.

Signed-off-by: Daniel Yang <danielyangkang@gmail.com>
---
 fs/ocfs2/cluster/heartbeat.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/ocfs2/cluster/heartbeat.c b/fs/ocfs2/cluster/heartbeat.c
index 4b9f45d70..dff18efbc 100644
--- a/fs/ocfs2/cluster/heartbeat.c
+++ b/fs/ocfs2/cluster/heartbeat.c
@@ -3,6 +3,7 @@
  * Copyright (C) 2004, 2005 Oracle.  All rights reserved.
  */
 
+#include "linux/kstrtox.h"
 #include <linux/kernel.h>
 #include <linux/sched.h>
 #include <linux/jiffies.h>
@@ -1777,8 +1778,9 @@ static ssize_t o2hb_region_dev_store(struct config_item *item,
 	if (o2nm_this_node() == O2NM_MAX_NODES)
 		goto out;
 
-	fd = simple_strtol(p, &p, 0);
-	if (!p || (*p && (*p != '\n')))
+	int p_to_long_ret = kstrtol(p, 0, &fd);
+
+	if (p_to_long_ret < 0)
 		goto out;
 
 	if (fd < 0 || fd >= INT_MAX)
-- 
2.39.5
Re: [PATCH] ocfs2: replace deprecated simple_strtol with kstrtol
Posted by Joseph Qi 1 year, 2 months ago

On 11/13/24 4:09 PM, Daniel Yang wrote:
> The function simple_strtol ignores overflows and has an awkward
> interface for error checking. Replace with the recommended kstrtol
> function leads to clearer error checking and safer conversions.
> 
> Signed-off-by: Daniel Yang <danielyangkang@gmail.com>
> ---
>  fs/ocfs2/cluster/heartbeat.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/ocfs2/cluster/heartbeat.c b/fs/ocfs2/cluster/heartbeat.c
> index 4b9f45d70..dff18efbc 100644
> --- a/fs/ocfs2/cluster/heartbeat.c
> +++ b/fs/ocfs2/cluster/heartbeat.c
> @@ -3,6 +3,7 @@
>   * Copyright (C) 2004, 2005 Oracle.  All rights reserved.
>   */
>  
> +#include "linux/kstrtox.h"
>  #include <linux/kernel.h>
>  #include <linux/sched.h>
>  #include <linux/jiffies.h>
> @@ -1777,8 +1778,9 @@ static ssize_t o2hb_region_dev_store(struct config_item *item,
>  	if (o2nm_this_node() == O2NM_MAX_NODES)
>  		goto out;
>  
> -	fd = simple_strtol(p, &p, 0);
> -	if (!p || (*p && (*p != '\n')))
> +	int p_to_long_ret = kstrtol(p, 0, &fd);
> +

Please define at the beginning.
Seems we can just re-use 'ret'.
BTW, the blank line can be eleminated.

Thanks,
Joseph

> +	if (p_to_long_ret < 0)
>  		goto out;
>  
>  	if (fd < 0 || fd >= INT_MAX)
Re: [PATCH] ocfs2: replace deprecated simple_strtol with kstrtol
Posted by Daniel Yang 1 year, 2 months ago
On Thu, Nov 14, 2024 at 5:05 PM Joseph Qi <joseph.qi@linux.alibaba.com> wrote:
>
>
>
> On 11/13/24 4:09 PM, Daniel Yang wrote:
> > The function simple_strtol ignores overflows and has an awkward
> > interface for error checking. Replace with the recommended kstrtol
> > function leads to clearer error checking and safer conversions.
> >
> > Signed-off-by: Daniel Yang <danielyangkang@gmail.com>
> > ---
> >  fs/ocfs2/cluster/heartbeat.c | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/fs/ocfs2/cluster/heartbeat.c b/fs/ocfs2/cluster/heartbeat.c
> > index 4b9f45d70..dff18efbc 100644
> > --- a/fs/ocfs2/cluster/heartbeat.c
> > +++ b/fs/ocfs2/cluster/heartbeat.c
> > @@ -3,6 +3,7 @@
> >   * Copyright (C) 2004, 2005 Oracle.  All rights reserved.
> >   */
> >
> > +#include "linux/kstrtox.h"
> >  #include <linux/kernel.h>
> >  #include <linux/sched.h>
> >  #include <linux/jiffies.h>
> > @@ -1777,8 +1778,9 @@ static ssize_t o2hb_region_dev_store(struct config_item *item,
> >       if (o2nm_this_node() == O2NM_MAX_NODES)
> >               goto out;
> >
> > -     fd = simple_strtol(p, &p, 0);
> > -     if (!p || (*p && (*p != '\n')))
> > +     int p_to_long_ret = kstrtol(p, 0, &fd);
> > +
>
> Please define at the beginning.
> Seems we can just re-use 'ret'.
> BTW, the blank line can be eleminated.
>
> Thanks,
> Joseph
>
> > +     if (p_to_long_ret < 0)
> >               goto out;
> >
> >       if (fd < 0 || fd >= INT_MAX)
>

Ok. Made the changes and sent PATCH v2. Lmk if there's anything else
that needs to be changed.

- Daniel