diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2024-07-21 14:45:08 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2024-08-29 17:33:16 +0200 |
commit | f1aa7c509aa766080db7ab3aec2e31b1df09e57c (patch) | |
tree | 46a52b693639e4ee0c4ffb81ec09afe78b31df98 /mm | |
parent | 2685a2b9e55db1d0f34dcab863c7cc0842e7df15 (diff) | |
download | linux-rpi-f1aa7c509aa766080db7ab3aec2e31b1df09e57c.tar.gz linux-rpi-f1aa7c509aa766080db7ab3aec2e31b1df09e57c.tar.bz2 linux-rpi-f1aa7c509aa766080db7ab3aec2e31b1df09e57c.zip |
memcg_write_event_control(): fix a user-triggerable oops
commit 046667c4d3196938e992fba0dfcde570aa85cd0e upstream.
we are *not* guaranteed that anything past the terminating NUL
is mapped (let alone initialized with anything sane).
Fixes: 0dea116876ee ("cgroup: implement eventfd-based generic API for notifications")
Cc: stable@vger.kernel.org
Cc: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/memcontrol.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index fd1b707f5de4..110afda740a1 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -4880,9 +4880,12 @@ static ssize_t memcg_write_event_control(struct kernfs_open_file *of, buf = endp + 1; cfd = simple_strtoul(buf, &endp, 10); - if ((*endp != ' ') && (*endp != '\0')) + if (*endp == '\0') + buf = endp; + else if (*endp == ' ') + buf = endp + 1; + else return -EINVAL; - buf = endp + 1; event = kzalloc(sizeof(*event), GFP_KERNEL); if (!event) |