From: Andrew Morton <akpm@linux-foundation.org>
To: yi.y.yang@intel.com
Cc: gregkh@suse.de, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2.6.24] Add new string functions strict_strto* and convert kernel params to use them, take 2
Date: Thu, 31 Jan 2008 23:36:26 -0800 [thread overview]
Message-ID: <20080131233626.2a91d534.akpm@linux-foundation.org> (raw)
In-Reply-To: <1201817503.3925.5.camel@yangyi-dev.bj.intel.com>
On Fri, 01 Feb 2008 06:11:43 +0800 Yi Yang <yi.y.yang@intel.com> wrote:
> This patch is a resend, it changes previous name "real_" to "strict_"
> according to Randy Dunlap's feedback. Please consider to apply. thanks.
>
> Currently, for every sysfs node, the callers will be responsible for
> implementing store operation, so many many callers are doing duplicate
> things to validate input, they have the same mistakes because they are
> calling simple_strtol/ul/ll/uul, especially for module params, they are
> just numeric, but you can echo such values as 0x1234xxx, 07777888 and
> 1234aaa, for these cases, module params store operation just ignores
> succesive invalid char and converts prefix part to a numeric although
> input is acctually invalid.
>
> This patch tries to fix the aforementioned issues and implements strict_strtox
> serial functions, kernel/params.c uses them to strictly validate input,
> so module params will reject such values as 0x1234xxxx and returns an error:
>
> write error: Invalid argument
>
> Any modules which export numeric sysfs node can use strict_strtox instead of
> simple_strtox to reject any invalid input.
>
> Here are some test results:
>
> Before applying this patch:
>
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]# echo 0x1000 > /sys/module/e1000/parameters/copybreak
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]# echo 0x1000g > /sys/module/e1000/parameters/copybreak
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]# echo 0x1000gggggggg > /sys/module/e1000/parameters/copybreak
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]# echo 010000 > /sys/module/e1000/parameters/copybreak
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]# echo 0100008 > /sys/module/e1000/parameters/copybreak
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]# echo 010000aaaaa > /sys/module/e1000/parameters/copybreak
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]#
>
>
> After applying this patch:
>
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]# echo 0x1000 > /sys/module/e1000/parameters/copybreak
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]# echo 0x1000g > /sys/module/e1000/parameters/copybreak
> -bash: echo: write error: Invalid argument
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]# echo 0x1000gggggggg > /sys/module/e1000/parameters/copybreak
> -bash: echo: write error: Invalid argument
> [root@yangyi-dev /]# echo 010000 > /sys/module/e1000/parameters/copybreak
> [root@yangyi-dev /]# echo 0100008 > /sys/module/e1000/parameters/copybreak
> -bash: echo: write error: Invalid argument
> [root@yangyi-dev /]# echo 010000aaaaa > /sys/module/e1000/parameters/copybreak
> -bash: echo: write error: Invalid argument
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]# echo -n 4096 > /sys/module/e1000/parameters/copybreak
> [root@yangyi-dev /]# cat /sys/module/e1000/parameters/copybreak
> 4096
> [root@yangyi-dev /]#
>
Oh dear. So if someone has an existing script which does
echo 0x1000g > /sys/module/e1000/parameters/copybreak
we just broke their setup.
This is what happens when we screw up kernel interfaces: we should remain
bug-for-bug compatible with earlier releases. argh, we suck :(
I'm inclined to merge it anyway - everyone already knows we suck, and
not many people will be affected and they suck too.
next prev parent reply other threads:[~2008-02-01 7:38 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-04 10:10 [linux-pm][PATCH] base: Change power/wakeup output from "" to "unsupported" if wakeup feature isn't supported by a device Yi Yang
2008-01-04 11:48 ` Pavel Machek
2008-01-04 16:09 ` David Brownell
2008-01-04 16:38 ` Alan Stern
2008-01-04 16:52 ` Olivier Galibert
2008-01-04 17:20 ` Oliver Neukum
2008-01-07 2:00 ` Yi Yang
2008-01-07 1:55 ` Yi Yang
2008-01-07 3:49 ` David Brownell
2008-01-07 1:52 ` Yi Yang
2008-01-07 1:37 ` Yi Yang
2008-01-07 1:57 ` Rafael J. Wysocki
2008-01-07 2:05 ` Yi Yang
2008-01-07 16:46 ` Rafael J. Wysocki
2008-01-07 1:21 ` Yi Yang
2008-01-04 16:31 ` David Brownell
2008-01-07 1:51 ` Yi Yang
2008-01-22 23:05 ` [PATCH 2.6.24-rc8] cpufreq: fix obvious condition statement error Yi Yang
2008-01-28 23:14 ` [PATCH 2.6.24] x86: add sysfs interface for cpuid module Yi Yang
2008-01-29 8:44 ` Sam Ravnborg
2008-01-29 22:22 ` Yi Yang
2008-01-30 7:48 ` Sam Ravnborg
2008-01-29 15:51 ` H. Peter Anvin
2008-01-29 17:52 ` Yi Yang
2008-01-30 6:09 ` H. Peter Anvin
2008-01-29 21:56 ` Yi Yang
2008-01-30 7:17 ` H. Peter Anvin
2008-01-29 22:13 ` Yi Yang
2008-01-30 7:33 ` H. Peter Anvin
2008-01-29 23:41 ` [RFC PATCH 2.6.24] x86: add sysfs interface for cpuid module, try 2 Yi Yang
2008-01-30 17:35 ` H. Peter Anvin
2008-01-31 1:18 ` [PATCH 2.6.24] Add new string functions real_strtoul and change kernel params to use them Yi Yang
2008-01-31 17:03 ` Randy Dunlap
2008-01-31 16:30 ` Yi Yang
2008-02-01 2:47 ` Randy Dunlap
2008-01-31 22:11 ` [PATCH 2.6.24] Add new string functions strict_strto* and convert kernel params to use them, take 2 Yi Yang
2008-02-01 0:02 ` [PATCH 2.6.24] Add new string functions strict_strto* and convert kernel params to use them, take 3 Yi Yang
2008-02-01 7:36 ` Andrew Morton [this message]
2008-02-01 7:39 ` [PATCH 2.6.24] Add new string functions strict_strto* and convert kernel params to use them, take 2 Andrew Morton
2008-02-01 7:40 ` Andrew Morton
2008-02-01 16:31 ` [PATCH 2.6.24] x86: add sysfs interface for cpuid module dean gaudet
2008-02-01 17:56 ` H. Peter Anvin
2008-02-01 17:58 ` H. Peter Anvin
2008-02-14 23:44 ` [PATCH 2.6.25-rc1] cpufreq: fix cpufreq policy refcount imbalance Yi Yang
2008-02-14 23:48 ` Yi Yang
2008-02-15 15:52 ` [linux-pm] " Alan Stern
2008-02-15 18:24 ` Greg KH
2008-02-15 21:01 ` Greg KH
2008-02-25 0:46 ` [PATCH 2.6.25-rc3] cpuidle: fix cpuidle time and usage overflow Yi Yang
2008-02-25 10:15 ` Ingo Molnar
2008-02-25 1:10 ` Yi Yang
2008-03-26 4:46 ` Len Brown
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=20080131233626.2a91d534.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=yi.y.yang@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome