Re: [PATCH 2/2] Explicitly call tcp creation and init from memcontrol.c

From: Glauber Costa
Date: Thu Dec 15 2011 - 16:12:28 EST


On 12/15/2011 09:00 PM, David Miller wrote:
From: Glauber Costa<glommer@xxxxxxxxxxxxx>
Date: Thu, 15 Dec 2011 13:34:32 +0400

Walking the proto_list holds a read_lock, which prevents us from doing
allocations. Splitting the tcp create function into create + init is
good, but it is not enough since create_files will do allocations as well
(dentry ones, mostly).

Since this does not involve any protocol state, I propose we call the tcp
functions explicitly from memcontrol.c

With this, we lose by now the ability of doing cgroup memcontrol for
protocols that are loaded as modules. But at least the ones I have in mind
won't really need it (tcp_ipv6 being the only one, but it uses the same data
structures as tcp_ipv4). So I believe this to be the simpler solution to this
problem.

Signed-off-by: Glauber Costa<glommer@xxxxxxxxxxxxx>

This is an unnecessary limitation, please fix this properly otherwise
DCCP, SCTP, etc. won't be supportable with this stuff.

How about the following patch then ? I am keeping protocols that has the cgroup stuff on in a separate list, that can be protected by a mutex. Therefore we can allocate without going into troubles.

Let me know if you still have objections, I'll be happy to address them.