net: fix sleeping while atomic problem in sock mem_cgroup.
authorGlauber Costa <glommer@parallels.com>
Fri, 16 Dec 2011 00:51:59 +0000 (00:51 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 16 Dec 2011 20:35:17 +0000 (15:35 -0500)
commit36b77a52087a9fca4228c06e0730750f9b6468f0
tree90812a9ce9964e051f5fd286647509560b98ae00
parentcb9ffb76949cd7b17c8468f8bf10d0ff75d4cdd2
net: fix sleeping while atomic problem in sock mem_cgroup.

We can't scan the proto_list to initialize sock cgroups, as it
holds a rwlock, and we also want to keep the code generic enough to
avoid calling the initialization functions of protocols directly,

Convert proto_list_lock into a mutex, so we can sleep and do the
necessary allocations. This lock is seldom taken, so there shouldn't
be any performance penalties associated with that

Signed-off-by: Glauber Costa <glommer@parallels.com>
CC: Hiroyouki Kamezawa <kamezawa.hiroyu@jp.fujitsu.com>
CC: David S. Miller <davem@davemloft.net>
CC: Eric Dumazet <eric.dumazet@gmail.com>
CC: Stephen Rothwell <sfr@canb.auug.org.au>
CC: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/sock.c