[Devel] [PATCH RHEL COMMIT] ms/memcg: enable accounting for pollfd and select bits arrays

Konstantin Khorenko khorenko at virtuozzo.com
Tue Sep 28 14:16:21 MSK 2021


The commit is pushed to "branch-rh9-5.14.vz9.1.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after ark-5.14
------>
commit 68412bedf57ec356f8939728a7b9d3eab1528fa0
Author: Vasily Averin <vvs at virtuozzo.com>
Date:   Tue Sep 28 14:16:20 2021 +0300

    ms/memcg: enable accounting for pollfd and select bits arrays
    
    User can call select/poll system calls with a large number of assigned
    file descriptors and force kernel to allocate up to several pages of
    memory till end of these sleeping system calls.  We have here long-living
    unaccounted per-task allocations.
    
    It makes sense to account for these allocations to restrict the host's
    memory consumption from inside the memcg-limited container.
    
    Link: https://lkml.kernel.org/r/56e31cb5-6e1e-bdba-d7ca-be64b9842363@virtuozzo.com
    Signed-off-by: Vasily Averin <vvs at virtuozzo.com>
    
    Reviewed-by: Shakeel Butt <shakeelb at google.com>
    Cc: Alexander Viro <viro at zeniv.linux.org.uk>
    Cc: Alexey Dobriyan <adobriyan at gmail.com>
    Cc: Andrei Vagin <avagin at gmail.com>
    Cc: Borislav Petkov <bp at alien8.de>
    Cc: Borislav Petkov <bp at suse.de>
    Cc: Christian Brauner <christian.brauner at ubuntu.com>
    Cc: Dmitry Safonov <0x7f454c46 at gmail.com>
    Cc: "Eric W. Biederman" <ebiederm at xmission.com>
    Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
    Cc: "H. Peter Anvin" <hpa at zytor.com>
    Cc: Ingo Molnar <mingo at redhat.com>
    Cc: "J. Bruce Fields" <bfields at fieldses.org>
    Cc: Jeff Layton <jlayton at kernel.org>
    Cc: Jens Axboe <axboe at kernel.dk>
    Cc: Jiri Slaby <jirislaby at kernel.org>
    Cc: Johannes Weiner <hannes at cmpxchg.org>
    Cc: Kirill Tkhai <ktkhai at virtuozzo.com>
    Cc: Michal Hocko <mhocko at kernel.org>
    Cc: Oleg Nesterov <oleg at redhat.com>
    Cc: Roman Gushchin <guro at fb.com>
    Cc: Serge Hallyn <serge at hallyn.com>
    Cc: Tejun Heo <tj at kernel.org>
    Cc: Thomas Gleixner <tglx at linutronix.de>
    Cc: Vladimir Davydov <vdavydov.dev at gmail.com>
    Cc: Yutian Yang <nglaive at gmail.com>
    Cc: Zefan Li <lizefan.x at bytedance.com>
    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
    (cherry picked from commit b655843444152c0a14b749308e4cb35d91cbcf0b)
    https://jira.sw.ru/browse/PSBM-133990
    Signed-off-by: Vasily Averin <vvs at virtuozzo.com>
---
 fs/select.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/select.c b/fs/select.c
index 945896d0ac9e..e83e563a351d 100644
--- a/fs/select.c
+++ b/fs/select.c
@@ -655,7 +655,7 @@ int core_sys_select(int n, fd_set __user *inp, fd_set __user *outp,
 			goto out_nofds;
 
 		alloc_size = 6 * size;
-		bits = kvmalloc(alloc_size, GFP_KERNEL);
+		bits = kvmalloc(alloc_size, GFP_KERNEL_ACCOUNT);
 		if (!bits)
 			goto out_nofds;
 	}
@@ -1000,7 +1000,7 @@ static int do_sys_poll(struct pollfd __user *ufds, unsigned int nfds,
 
 		len = min(todo, POLLFD_PER_PAGE);
 		walk = walk->next = kmalloc(struct_size(walk, entries, len),
-					    GFP_KERNEL);
+					    GFP_KERNEL_ACCOUNT);
 		if (!walk) {
 			err = -ENOMEM;
 			goto out_fds;


More information about the Devel mailing list