On 4/23/21 3:16 PM, Alexey Dobriyan wrote: > On Thu, Apr 22, 2021 at 01:37:02PM +0300, Vasily Averin wrote: >> When user creates IPC objects it forces kernel to allocate memory for >> these long-living objects. >> >> It makes sense to account them to restrict the host's memory consumption >> from inside the memcg-limited container. >> >> This patch enables accounting for IPC shared memory segments, messages >> semaphores and semaphore's undo lists. > >> --- a/ipc/msg.c >> +++ b/ipc/msg.c >> @@ -147,7 +147,7 @@ static int newque(struct ipc_namespace *ns, struct ipc_params *params) >> key_t key = params->key; >> int msgflg = params->flg; >> >> - msq = kvmalloc(sizeof(*msq), GFP_KERNEL); >> + msq = kvmalloc(sizeof(*msq), GFP_KERNEL_ACCOUNT); > > Why this requires vmalloc? struct msg_queue is not big at all. > >> --- a/ipc/shm.c >> +++ b/ipc/shm.c >> @@ -619,7 +619,7 @@ static int newseg(struct ipc_namespace *ns, struct ipc_params *params) >> ns->shm_tot + numpages > ns->shm_ctlall) >> return -ENOSPC; >> >> - shp = kvmalloc(sizeof(*shp), GFP_KERNEL); >> + shp = kvmalloc(sizeof(*shp), GFP_KERNEL_ACCOUNT); > > Same question. > Kmem caches can be GFP_ACCOUNT by default. It is side effect: previously all these objects was allocated via ipc_alloc/ipc_alloc_rcu function called kvmalloc inside. Should I replace it to kmalloc right in this patch? Thank you, Vasily Averin