2019-02-23 19:33:21

by Bharath Vedartham

[permalink] [raw]
Subject: [PATCH] staging: speakup: Replace simple_strtoul with kstrtoul

simple_strtoul is obsolete. Change it to kstrtoul. Kernel is building
and booting successfully.

Signed-off-by: Bharath Vedartham <[email protected]>
---
drivers/staging/speakup/kobjects.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/speakup/kobjects.c b/drivers/staging/speakup/kobjects.c
index 2e36d87..ad5a2b2 100644
--- a/drivers/staging/speakup/kobjects.c
+++ b/drivers/staging/speakup/kobjects.c
@@ -787,7 +787,9 @@ static ssize_t message_store_helper(const char *buf, size_t count,
continue;
}

- index = simple_strtoul(cp, &temp, 10);
+ retval = kstrtoul(cp, 0, &index);
+ if (retval)
+ return retval;

while ((temp < linefeed) && (*temp == ' ' || *temp == '\t'))
temp++;
--
2.7.4



2019-02-23 19:49:32

by Samuel Thibault

[permalink] [raw]
Subject: Re: [PATCH] staging: speakup: Replace simple_strtoul with kstrtoul

Bharath Vedartham, le dim. 24 févr. 2019 01:01:21 +0530, a ecrit:
> simple_strtoul is obsolete. Change it to kstrtoul. Kernel is building
> and booting successfully.

Please recheck your patch, temp is used after the simple_strtoul call.

Samuel

2019-02-23 20:03:04

by Bharath Vedartham

[permalink] [raw]
Subject: Re: [PATCH] staging: speakup: Replace simple_strtoul with kstrtoul

On Sat, Feb 23, 2019 at 08:37:50PM +0100, Samuel Thibault wrote:
> Bharath Vedartham, le dim. 24 f?vr. 2019 01:01:21 +0530, a ecrit:
> > simple_strtoul is obsolete. Change it to kstrtoul. Kernel is building
> > and booting successfully.
>
> Please recheck your patch, temp is used after the simple_strtoul call.
>
> Samuel

Sorry about that. After some thought, I feel this is a special case in
replacing simple_strtoul to kstrtoul. simple_strtoul can give back a
pointer to the end of the parsed string, whereas kstrtoul does not
give any thing of that kind. In our case, temp is the end of the
parsed cp string.

To replace simple_strtoul to kstrtoul, we need to know the length of the
unsigned long int returned and shift the cp pointer by that length to
get temp. This might involve a bit of code refactoring.

Bharath