]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
memcg_write_event_control(): fix a user-triggerable oops
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 21 Jul 2024 18:45:08 +0000 (14:45 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Aug 2024 15:35:43 +0000 (17:35 +0200)
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>
mm/memcontrol.c

index 88c7a0861017cde32ac5735e3e04512a83f57601..332f190bf3d6b68b37aaea37696573e5b6dbcb79 100644 (file)
@@ -5282,9 +5282,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)