linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] driver core: restrict buffer length in online_store()
@ 2017-07-21  0:39 Tiezhu Yang
  2017-07-21  5:28 ` Greg KH
  0 siblings, 1 reply; 2+ messages in thread
From: Tiezhu Yang @ 2017-07-21  0:39 UTC (permalink / raw)
  To: gregkh; +Cc: linux-kernel

According to Documentation/ABI/testing/sysfs-devices-online, in order to
control CPU N's hotplug state, we should write one of 'Yy1Nn0' to the file
/sys/devices/system/cpu/cpuN/online, other values should be invalid. so the
buffer length should be 2, buf[0] is one of 'Yy1Nn0' and buf[1] is '\n'.

without patch:
[root@localhost home]# echo 0test > /sys/devices/system/cpu/cpu1/online
[root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
0
[root@localhost home]# echo 1test > /sys/devices/system/cpu/cpu1/online
[root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
1
[root@localhost home]# echo ntest > /sys/devices/system/cpu/cpu1/online
[root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
0
[root@localhost home]# echo ytest > /sys/devices/system/cpu/cpu1/online
[root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
1
[root@localhost home]# echo Ntest > /sys/devices/system/cpu/cpu1/online
[root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
0
[root@localhost home]# echo Ytest > /sys/devices/system/cpu/cpu1/online
[root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
1

with patch:
[root@localhost home]# echo 0test > /sys/devices/system/cpu/cpu1/online
bash: echo: write error: Invalid argument
[root@localhost home]# echo 1test > /sys/devices/system/cpu/cpu1/online
bash: echo: write error: Invalid argument
[root@localhost home]# echo ntest > /sys/devices/system/cpu/cpu1/online
bash: echo: write error: Invalid argument
[root@localhost home]# echo ytest > /sys/devices/system/cpu/cpu1/online
bash: echo: write error: Invalid argument
[root@localhost home]# echo Ntest > /sys/devices/system/cpu/cpu1/online
bash: echo: write error: Invalid argument
[root@localhost home]# echo Ytest > /sys/devices/system/cpu/cpu1/online
bash: echo: write error: Invalid argument

Signed-off-by: Tiezhu Yang <kernelpatch@126.com>
---
 drivers/base/core.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index 755451f..6588ed5 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -1005,6 +1005,12 @@ static ssize_t online_store(struct device *dev, struct device_attribute *attr,
 	bool val;
 	int ret;
 
+	/* According to Documentation/ABI/testing/sysfs-devices-online,
+	 * the buf length should be 2, buf[0]: one of 'Yy1Nn0', buf[1]: '\n'.
+	 */
+	if (strlen(buf) != 2)
+		return -EINVAL;
+
 	ret = strtobool(buf, &val);
 	if (ret < 0)
 		return ret;
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] driver core: restrict buffer length in online_store()
  2017-07-21  0:39 [PATCH] driver core: restrict buffer length in online_store() Tiezhu Yang
@ 2017-07-21  5:28 ` Greg KH
  0 siblings, 0 replies; 2+ messages in thread
From: Greg KH @ 2017-07-21  5:28 UTC (permalink / raw)
  To: Tiezhu Yang; +Cc: linux-kernel

On Fri, Jul 21, 2017 at 08:39:04AM +0800, Tiezhu Yang wrote:
> According to Documentation/ABI/testing/sysfs-devices-online, in order to
> control CPU N's hotplug state, we should write one of 'Yy1Nn0' to the file
> /sys/devices/system/cpu/cpuN/online, other values should be invalid. so the
> buffer length should be 2, buf[0] is one of 'Yy1Nn0' and buf[1] is '\n'.
> 
> without patch:
> [root@localhost home]# echo 0test > /sys/devices/system/cpu/cpu1/online
> [root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
> 0
> [root@localhost home]# echo 1test > /sys/devices/system/cpu/cpu1/online
> [root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
> 1
> [root@localhost home]# echo ntest > /sys/devices/system/cpu/cpu1/online
> [root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
> 0
> [root@localhost home]# echo ytest > /sys/devices/system/cpu/cpu1/online
> [root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
> 1
> [root@localhost home]# echo Ntest > /sys/devices/system/cpu/cpu1/online
> [root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
> 0
> [root@localhost home]# echo Ytest > /sys/devices/system/cpu/cpu1/online
> [root@localhost home]# cat /sys/devices/system/cpu/cpu1/online
> 1
> 
> with patch:
> [root@localhost home]# echo 0test > /sys/devices/system/cpu/cpu1/online
> bash: echo: write error: Invalid argument
> [root@localhost home]# echo 1test > /sys/devices/system/cpu/cpu1/online
> bash: echo: write error: Invalid argument
> [root@localhost home]# echo ntest > /sys/devices/system/cpu/cpu1/online
> bash: echo: write error: Invalid argument
> [root@localhost home]# echo ytest > /sys/devices/system/cpu/cpu1/online
> bash: echo: write error: Invalid argument
> [root@localhost home]# echo Ntest > /sys/devices/system/cpu/cpu1/online
> bash: echo: write error: Invalid argument
> [root@localhost home]# echo Ytest > /sys/devices/system/cpu/cpu1/online
> bash: echo: write error: Invalid argument
> 
> Signed-off-by: Tiezhu Yang <kernelpatch@126.com>
> ---
>  drivers/base/core.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/base/core.c b/drivers/base/core.c
> index 755451f..6588ed5 100644
> --- a/drivers/base/core.c
> +++ b/drivers/base/core.c
> @@ -1005,6 +1005,12 @@ static ssize_t online_store(struct device *dev, struct device_attribute *attr,
>  	bool val;
>  	int ret;
>  
> +	/* According to Documentation/ABI/testing/sysfs-devices-online,
> +	 * the buf length should be 2, buf[0]: one of 'Yy1Nn0', buf[1]: '\n'.
> +	 */
> +	if (strlen(buf) != 2)
> +		return -EINVAL;
> +
>  	ret = strtobool(buf, &val);

strtobool should handle all of this, so let's not force every individual
user of it to check the "length".

What is the problem that this patch is trying to solve?  Who is writing
odd values to this file that is not working properly?  Who writes
"0testfoo" to the file and expect it to reject the value?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-07-21  5:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-21  0:39 [PATCH] driver core: restrict buffer length in online_store() Tiezhu Yang
2017-07-21  5:28 ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).