From: Glauber Costa <glommer@xxxxxxxxxxxxx> Date: Fri, 16 Dec 2011 06:37:50 +0400 > Since 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, > I propose we keep the interested parties in a separate list. This list > is protected by a mutex so we can sleep and do the necessary allocations. > > Also fixes a reference problem found by Randy Dunlap's randconfig. > > Signed-off-by: Glauber Costa <glommer@xxxxxxxxxxxxx> Two small changes please: 1) Add an appropriate prefix to your subject line indicating the subsystem being changed by this patch, "net: fix sleeping ..." would be appropriate in this case. 2) Put the ifdef'ery into the memcontrol.h header file, rather than sock.c, f.e. rename register_sock_cgroup to __register_sock_cgroup(), and unregister_sock_cgroup to __unregister_sock_cgroup. Then create two helper inlines in memcontrolh: #ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM static inline void register_sock_cgroup(struct proto *prot) { if (prot->proto_cgroup != NULL) register_sock_cgroup(prot); } static inline void unregister_sock_cgroup(struct proto *prot) { if (prot->proto_cgroup != NULL) unregister_sock_cgroup(prot); } #else static inline void register_sock_cgroup(struct proto *prot) { } static inline void unregister_sock_cgroup(struct proto *prot) { } #endif Then call these helpers unconditionally in net/core/sock.c That way you don't need any ifdefs in that file at all. -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html