]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - mm/memcontrol.c
net: tcp_memcontrol: protect all tcp_memcontrol calls by jump-label
[karo-tx-linux.git] / mm / memcontrol.c
index 44ed2dee8f0cdafaf0b6b2469fa1817eab22d9ca..d9344dad207e0941f63060137a4effbf12daa76b 100644 (file)
@@ -293,46 +293,40 @@ static inline struct mem_cgroup *mem_cgroup_from_id(unsigned short id)
 
 void sock_update_memcg(struct sock *sk)
 {
-       if (mem_cgroup_sockets_enabled) {
-               struct mem_cgroup *memcg;
-               struct cg_proto *cg_proto;
+       struct mem_cgroup *memcg;
+       struct cg_proto *cg_proto;
 
-               BUG_ON(!sk->sk_prot->proto_cgroup);
+       BUG_ON(!sk->sk_prot->proto_cgroup);
 
-               /* Socket cloning can throw us here with sk_cgrp already
-                * filled. It won't however, necessarily happen from
-                * process context. So the test for root memcg given
-                * the current task's memcg won't help us in this case.
-                *
-                * Respecting the original socket's memcg is a better
-                * decision in this case.
-                */
-               if (sk->sk_cgrp) {
-                       BUG_ON(mem_cgroup_is_root(sk->sk_cgrp->memcg));
-                       css_get(&sk->sk_cgrp->memcg->css);
-                       return;
-               }
+       /* Socket cloning can throw us here with sk_cgrp already
+        * filled. It won't however, necessarily happen from
+        * process context. So the test for root memcg given
+        * the current task's memcg won't help us in this case.
+        *
+        * Respecting the original socket's memcg is a better
+        * decision in this case.
+        */
+       if (sk->sk_cgrp) {
+               BUG_ON(mem_cgroup_is_root(sk->sk_cgrp->memcg));
+               css_get(&sk->sk_cgrp->memcg->css);
+               return;
+       }
 
-               rcu_read_lock();
-               memcg = mem_cgroup_from_task(current);
-               cg_proto = sk->sk_prot->proto_cgroup(memcg);
-               if (cg_proto && cg_proto->active &&
-                   css_tryget_online(&memcg->css)) {
-                       sk->sk_cgrp = cg_proto;
-               }
-               rcu_read_unlock();
+       rcu_read_lock();
+       memcg = mem_cgroup_from_task(current);
+       cg_proto = sk->sk_prot->proto_cgroup(memcg);
+       if (cg_proto && cg_proto->active &&
+           css_tryget_online(&memcg->css)) {
+               sk->sk_cgrp = cg_proto;
        }
+       rcu_read_unlock();
 }
 EXPORT_SYMBOL(sock_update_memcg);
 
 void sock_release_memcg(struct sock *sk)
 {
-       if (mem_cgroup_sockets_enabled && sk->sk_cgrp) {
-               struct mem_cgroup *memcg;
-               WARN_ON(!sk->sk_cgrp->memcg);
-               memcg = sk->sk_cgrp->memcg;
-               css_put(&sk->sk_cgrp->memcg->css);
-       }
+       WARN_ON(!sk->sk_cgrp->memcg);
+       css_put(&sk->sk_cgrp->memcg->css);
 }
 
 struct cg_proto *tcp_proto_cgroup(struct mem_cgroup *memcg)