diff options
author | Al Viro <[email protected]> | 2024-07-21 14:45:08 -0400 |
---|---|---|
committer | Al Viro <[email protected]> | 2024-08-12 21:58:44 -0400 |
commit | 046667c4d3196938e992fba0dfcde570aa85cd0e (patch) | |
tree | 282b1588197e90255a770e210c92fa3820e38157 | |
parent | 9a2fa1472083580b6c66bdaf291f591e1170123a (diff) |
memcg_write_event_control(): fix a user-triggerable oops
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: [email protected]
Cc: Andrew Morton <[email protected]>
Acked-by: Michal Hocko <[email protected]>
Signed-off-by: Al Viro <[email protected]>
-rw-r--r-- | mm/memcontrol-v1.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/mm/memcontrol-v1.c b/mm/memcontrol-v1.c index 2aeea4d8bf8e..417c96f2da28 100644 --- a/mm/memcontrol-v1.c +++ b/mm/memcontrol-v1.c @@ -1842,9 +1842,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) |