Message ID | 20240901182244.45543-1-riyandhiman14@gmail.com |
---|---|
State | New |
Headers | show |
Series | mmc: core: convert simple_stroul to kstroul | expand |
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 >
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 --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; }
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(-)