Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 478988d3 authored by KOSAKI Motohiro's avatar KOSAKI Motohiro Committed by Linus Torvalds
Browse files

cgroup: fix strstrip() misuse



cgroup_write_X64() and cgroup_write_string() ignore the return value of
strstrip().  it makes small inconsistent behavior.

example:
=========================
 # cd /mnt/cgroup/hoge
 # cat memory.swappiness
 60
 # echo "59 " > memory.swappiness
 # cat memory.swappiness
 59
 # echo " 58" > memory.swappiness
 bash: echo: write error: Invalid argument

This patch fixes it.

Cc: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: default avatarPaul Menage <menage@google.com>
Signed-off-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 58355c78
Loading
Loading
Loading
Loading
+3 −5
Original line number Original line Diff line number Diff line
@@ -1710,14 +1710,13 @@ static ssize_t cgroup_write_X64(struct cgroup *cgrp, struct cftype *cft,
		return -EFAULT;
		return -EFAULT;


	buffer[nbytes] = 0;     /* nul-terminate */
	buffer[nbytes] = 0;     /* nul-terminate */
	strstrip(buffer);
	if (cft->write_u64) {
	if (cft->write_u64) {
		u64 val = simple_strtoull(buffer, &end, 0);
		u64 val = simple_strtoull(strstrip(buffer), &end, 0);
		if (*end)
		if (*end)
			return -EINVAL;
			return -EINVAL;
		retval = cft->write_u64(cgrp, cft, val);
		retval = cft->write_u64(cgrp, cft, val);
	} else {
	} else {
		s64 val = simple_strtoll(buffer, &end, 0);
		s64 val = simple_strtoll(strstrip(buffer), &end, 0);
		if (*end)
		if (*end)
			return -EINVAL;
			return -EINVAL;
		retval = cft->write_s64(cgrp, cft, val);
		retval = cft->write_s64(cgrp, cft, val);
@@ -1753,8 +1752,7 @@ static ssize_t cgroup_write_string(struct cgroup *cgrp, struct cftype *cft,
	}
	}


	buffer[nbytes] = 0;     /* nul-terminate */
	buffer[nbytes] = 0;     /* nul-terminate */
	strstrip(buffer);
	retval = cft->write_string(cgrp, cft, strstrip(buffer));
	retval = cft->write_string(cgrp, cft, buffer);
	if (!retval)
	if (!retval)
		retval = nbytes;
		retval = nbytes;
out:
out: