kernel.h: update comment about simple_strto<foo>() functions

There were discussions in the past about use cases for
simple_strto<foo>() functions and, in some rare cases, they have a
benefit over kstrto<foo>() ones.

Update a comment to reduce confusion about special use cases.

Link: http://lkml.kernel.org/r/20190801192904.41087-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Suggested-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Mans Rullgard <mans@mansr.com>
Cc: Petr Mladek <pmladek@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Andy Shevchenko 2019-12-04 16:50:32 -08:00 committed by Linus Torvalds
parent 2f5bd34369
commit 885e68e8b7
1 changed files with 14 additions and 5 deletions

View File

@ -348,8 +348,7 @@ int __must_check kstrtoll(const char *s, unsigned int base, long long *res);
* @res: Where to write the result of the conversion on success. * @res: Where to write the result of the conversion on success.
* *
* Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error. * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error.
* Used as a replacement for the obsolete simple_strtoull. Return code must * Used as a replacement for the simple_strtoull. Return code must be checked.
* be checked.
*/ */
static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res) static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
{ {
@ -377,8 +376,7 @@ static inline int __must_check kstrtoul(const char *s, unsigned int base, unsign
* @res: Where to write the result of the conversion on success. * @res: Where to write the result of the conversion on success.
* *
* Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error. * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error.
* Used as a replacement for the obsolete simple_strtoull. Return code must * Used as a replacement for the simple_strtoull. Return code must be checked.
* be checked.
*/ */
static inline int __must_check kstrtol(const char *s, unsigned int base, long *res) static inline int __must_check kstrtol(const char *s, unsigned int base, long *res)
{ {
@ -454,7 +452,18 @@ static inline int __must_check kstrtos32_from_user(const char __user *s, size_t
return kstrtoint_from_user(s, count, base, res); return kstrtoint_from_user(s, count, base, res);
} }
/* Obsolete, do not use. Use kstrto<foo> instead */ /*
* Use kstrto<foo> instead.
*
* NOTE: simple_strto<foo> does not check for the range overflow and,
* depending on the input, may give interesting results.
*
* Use these functions if and only if you cannot use kstrto<foo>, because
* the conversion ends on the first non-digit character, which may be far
* beyond the supported range. It might be useful to parse the strings like
* 10x50 or 12:21 without altering original string or temporary buffer in use.
* Keep in mind above caveat.
*/
extern unsigned long simple_strtoul(const char *,char **,unsigned int); extern unsigned long simple_strtoul(const char *,char **,unsigned int);
extern long simple_strtol(const char *,char **,unsigned int); extern long simple_strtol(const char *,char **,unsigned int);