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

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
...@@ -1710,14 +1710,13 @@ static ssize_t cgroup_write_X64(struct cgroup *cgrp, struct cftype *cft, ...@@ -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, ...@@ -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:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment