From: Adrian Hunter <adrian.hunter@intel.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Hu Jianyang <hujianyang@huawei.com>,
MTD Maling List <linux-mtd@lists.infradead.org>,
Zhang Zhen <zhenzhang.zhang@huawei.com>,
Artem Bityutskiy <dedekind1@gmail.com>
Subject: Re: [PATCH v2] UBIFS: replace simple_strtoul() with kstrtoint()
Date: Tue, 20 May 2014 15:45:32 +0300 [thread overview]
Message-ID: <537B4E6C.7050008@intel.com> (raw)
In-Reply-To: <CAMuHMdWu30E2jg3=Z_bnDknD-HJqEAn_KxQH4WJ+B9nmwiKwGQ@mail.gmail.com>
On 05/20/2014 03:31 PM, Geert Uytterhoeven wrote:
> On Tue, May 20, 2014 at 2:21 PM, Adrian Hunter <adrian.hunter@intel.com> wrote:
>> On 05/20/2014 11:48 AM, Zhang Zhen wrote:
>>> --- a/fs/ubifs/super.c
>>> +++ b/fs/ubifs/super.c
>>> @@ -1903,7 +1903,7 @@ const struct super_operations ubifs_super_operations = {
>>> static struct ubi_volume_desc *open_ubi(const char *name, int mode)
>>> {
>>> struct ubi_volume_desc *ubi;
>>> - int dev, vol;
>>> + int dev, vol, ret;
>>> char *endptr;
>>>
>>> /* First, try to open using the device node path method */
>>> @@ -1922,10 +1922,11 @@ static struct ubi_volume_desc *open_ubi(const char *name, int mode)
>>> if (!isdigit(name[3]))
>>> return ERR_PTR(-EINVAL);
>>>
>>> - dev = simple_strtoul(name + 3, &endptr, 0);
>>> + endptr = (char *)name + 3;
>
> Please make endptr const char *, so the cast can be killed.
> Always think twice before adding a cast!
>
> Ah, there's still another simple_strtoul() left below, that needs to be
> converted first.
>
>>> + ret = kstrtoint(endptr, 0, &dev);
>>
>> But endptr is used in the code later, so this is wrong.
>
> That was my first thought, too. But upon closer look, I think it's correct.
>
>>>
>>> /* ubiY method */
>>> - if (*endptr == '\0')
>
> endptr would point to the trailing nul on success...
>
>>> + if (!ret)
>
> ... which is now replaced by a test for ret not being an errorcoe.
>
>>> return ubi_open_volume(0, dev, mode);
>>>
>>> /* ubiX_Y method */
>
> If ret is an errorcode, the flow continues.
>
> As parsing the number failed, the code checks if the first character
> (name + 3) is an underscore or colon:
No, it does not check if parsing failed, it checks for end-of-input.
The "X" and "Y" of "ubiX_Y" are numbers.
>
> if (*endptr == '_' && isdigit(endptr[1])) {
>
>
> vol = simple_strtoul(endptr + 1, &endptr, 0);
> if (*endptr != '\0')
> return ERR_PTR(-EINVAL);
> return ubi_open_volume(dev, vol, mode);
> }
>
> /* ubiX:NAME method */
> if ((*endptr == ':' || *endptr == '!') && endptr[1] != '\0')
> return ubi_open_volume_nm(dev, ++endptr, mode);
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds
>
>
next prev parent reply other threads:[~2014-05-20 12:46 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1400575582-24841-1-git-send-email-zhenzhang.zhang@huawei.com>
2014-05-20 8:48 ` [PATCH v2] UBIFS: replace simple_strtoul() with kstrtoint() Zhang Zhen
2014-05-20 12:21 ` Adrian Hunter
2014-05-20 12:31 ` Geert Uytterhoeven
2014-05-20 12:45 ` Adrian Hunter [this message]
2014-05-20 12:55 ` Geert Uytterhoeven
2014-05-21 2:22 ` Zhang Zhen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=537B4E6C.7050008@intel.com \
--to=adrian.hunter@intel.com \
--cc=dedekind1@gmail.com \
--cc=geert@linux-m68k.org \
--cc=hujianyang@huawei.com \
--cc=linux-mtd@lists.infradead.org \
--cc=zhenzhang.zhang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.