[PATCH] staging: speakup: remove simple_strtoul()
Justin Skists
justin.skists at juzza.co.uk
Mon May 21 05:23:44 EDT 2018
Gabriel,
> On 20 May 2018 at 21:06 Gabriel Fedel <fedel at fedel.net.br> wrote:
> >>> Replace simple_strtoul() with kstrtoul(), because simple_strtoul() is
> >>> obsolete
> >>>
> >>> Signed-off-by: Gabriel Fedel <fedel at fedel.net.br>
> >>> ---
> >>> drivers/staging/speakup/kobjects.c | 7 +++++--
> >>> 1 file changed, 5 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/drivers/staging/speakup/kobjects.c
> >>> b/drivers/staging/speakup/kobjects.c
> >>> index f1f9022..ddc5ac3 100644
> >>> --- a/drivers/staging/speakup/kobjects.c
> >>> +++ b/drivers/staging/speakup/kobjects.c
> >>> @@ -154,7 +154,9 @@ static ssize_t chars_chartab_store(struct kobject
> >>> *kobj,
> >>> continue;
> >>> }
> >>>
> >>> - index = simple_strtoul(cp, &temp, 10);
> >>> + if kstrtoul((char *)cp, 10, &index) != 0
> >>> + pr_warn("overflow or parsing error has occurred");
> >>> +
> >>> if (index > 255) {
> >>> rejected++;
> >>> cp = linefeed + 1;
> >>> @@ -787,7 +789,8 @@ static ssize_t message_store_helper(const char
> >>> *buf,
> >>> size_t count,
> >>> continue;
> >>> }
> >>>
> >>> - index = simple_strtoul(cp, &temp, 10);
> >>> + if kstrtoul((char *)cp, 10, &index) != 0
> >>> + pr_warn("overflow or parsing error has occurred");
> >>>
> >>> while ((temp < linefeed) && (*temp == ' ' || *temp == '\t'))
> >>> temp++;
> >>
> Just to check, so is there no problem with temp on this change, right?
I've had coffee, now. I'm afraid that there is a problem with temp in your change:
simple_strtoul() would set temp to be the end of the parsed input.
The function (chars_chartab_store() and message_store_helper()) is then using
temp to skip some whitespace after the strtoul parsing.
desc_length is calculated from the resulting string between temp and the linefeed.
However, with the patch, temp hasn't been set (still NULL), so the desc_length
calculations will be wrong.
Also, I've noticed a couple of issues with your original submission.
1) You need to send patches in plain-text :)
2) You forgot to add devel at driverdev.osuosl.org (staging drivers subsystem) to the cc: list.
Hope that helps,
Justin.
More information about the Speakup
mailing list