Re: [PATCH v4 2/2] net: memcg: late association of sock to memcg

From: David Miller
Date: Tue Mar 10 2020 - 18:34:11 EST


From: Shakeel Butt <shakeelb@xxxxxxxxxx>
Date: Mon, 9 Mar 2020 22:16:06 -0700

> If a TCP socket is allocated in IRQ context or cloned from unassociated
> (i.e. not associated to a memcg) in IRQ context then it will remain
> unassociated for its whole life. Almost half of the TCPs created on the
> system are created in IRQ context, so, memory used by such sockets will
> not be accounted by the memcg.
>
> This issue is more widespread in cgroup v1 where network memory
> accounting is opt-in but it can happen in cgroup v2 if the source socket
> for the cloning was created in root memcg.
>
> To fix the issue, just do the association of the sockets at the accept()
> time in the process context and then force charge the memory buffer
> already used and reserved by the socket.
>
> Signed-off-by: Shakeel Butt <shakeelb@xxxxxxxxxx>

Applied and queued up for -stable.