Re: [PATCH v7 02/10] memcg: enable accounting for pollfd and select bits arrays
From: Shakeel Butt <hidden>
Date: 2021-07-27 21:39:39
Also in:
linux-fsdevel, lkml
On Mon, Jul 26, 2021 at 10:33 PM Vasily Averin [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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. Signed-off-by: Vasily Averin <redacted> --- fs/select.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)diff --git a/fs/select.c b/fs/select.c index 945896d..e83e563 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);
What about the similar allocation in compat_core_sys_select()? Also what about the allocation in poll_get_entry()?
quoted hunk ↗ jump to hunk
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; --1.8.3.1