On 12/15/2011 09:00 PM, David Miller wrote: > From: Glauber Costa > 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 > > 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.