diff mbox series

mmc: core: convert simple_stroul to kstroul

Message ID 20240901182244.45543-1-riyandhiman14@gmail.com
State New
Headers show
Series mmc: core: convert simple_stroul to kstroul | expand

Commit Message

Riyan Dhiman Sept. 1, 2024, 6:22 p.m. UTC
simple_strtoul() is obsolete and lacks proper error handling, making it
unsafe for converting strings to unsigned long values. Replace it with
kstrtoul(), which provides robust error checking and better safety.

This change improves the reliability of the string-to-integer conversion
and aligns with current kernel coding standards. Error handling is added
to catch conversion failures, returning -EINVAL when input is invalid.

Issue reported by checkpatch:
- WARNING: simple_strtoul is obsolete, use kstrtoul instead

Signed-off-by: Riyan Dhiman <riyandhiman14@gmail.com>
---
 drivers/mmc/core/block.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Ulf Hansson Sept. 3, 2024, 12:37 p.m. UTC | #1
On Sun, 1 Sept 2024 at 20:22, Riyan Dhiman <riyandhiman14@gmail.com> wrote:
>
> simple_strtoul() is obsolete and lacks proper error handling, making it
> unsafe for converting strings to unsigned long values. Replace it with
> kstrtoul(), which provides robust error checking and better safety.
>
> This change improves the reliability of the string-to-integer conversion
> and aligns with current kernel coding standards. Error handling is added
> to catch conversion failures, returning -EINVAL when input is invalid.
>
> Issue reported by checkpatch:
> - WARNING: simple_strtoul is obsolete, use kstrtoul instead
>
> Signed-off-by: Riyan Dhiman <riyandhiman14@gmail.com>

Applied for next, thanks!

Kind regards
Uffe


> ---
>  drivers/mmc/core/block.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
> index 2c9963248fcb..140d2b3504b3 100644
> --- a/drivers/mmc/core/block.c
> +++ b/drivers/mmc/core/block.c
> @@ -307,10 +307,10 @@ static ssize_t force_ro_store(struct device *dev, struct device_attribute *attr,
>                               const char *buf, size_t count)
>  {
>         int ret;
> -       char *end;
>         struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev));
> -       unsigned long set = simple_strtoul(buf, &end, 0);
> -       if (end == buf) {
> +       unsigned long set;
> +
> +       if (kstrtoul(buf, 0, &set)) {
>                 ret = -EINVAL;
>                 goto out;
>         }
> --
> 2.46.0
>
Andy Shevchenko Sept. 16, 2024, 3:19 p.m. UTC | #2
On Tue, Sep 03, 2024 at 02:37:25PM +0200, Ulf Hansson wrote:
> On Sun, 1 Sept 2024 at 20:22, Riyan Dhiman <riyandhiman14@gmail.com> wrote:
> >
> > simple_strtoul() is obsolete and lacks proper error handling, making it
> > unsafe for converting strings to unsigned long values. Replace it with
> > kstrtoul(), which provides robust error checking and better safety.
> >
> > This change improves the reliability of the string-to-integer conversion
> > and aligns with current kernel coding standards. Error handling is added
> > to catch conversion failures, returning -EINVAL when input is invalid.
> >
> > Issue reported by checkpatch:
> > - WARNING: simple_strtoul is obsolete, use kstrtoul instead

In rare cases this is a false positive, here seems to be okay.

...

> > +       if (kstrtoul(buf, 0, &set)) {
> >                 ret = -EINVAL;
> >                 goto out;
> >         }

Now you shadow the error code of kstrtox(), this has to be as simple as

       ret = kstrtoul(buf, 0, &set);
       if (ret)
               goto out;
diff mbox series

Patch

diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
index 2c9963248fcb..140d2b3504b3 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -307,10 +307,10 @@  static ssize_t force_ro_store(struct device *dev, struct device_attribute *attr,
 			      const char *buf, size_t count)
 {
 	int ret;
-	char *end;
 	struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev));
-	unsigned long set = simple_strtoul(buf, &end, 0);
-	if (end == buf) {
+	unsigned long set;
+
+	if (kstrtoul(buf, 0, &set)) {
 		ret = -EINVAL;
 		goto out;
 	}