Messages in this thread Patch in this message | | | From | Michal Hocko <> | Subject | [PATCH 6/8] memcg, tcp_kmem: check for cg_proto in sock_update_memcg | Date | Wed, 8 Jul 2015 14:27:50 +0200 |
| |
From: Michal Hocko <mhocko@suse.cz>
sk_prot->proto_cgroup is allowed to return NULL but sock_update_memcg doesn't check for NULL. The function relies on the mem_cgroup_is_root check because we shouldn't get NULL otherwise because mem_cgroup_from_task will always return !NULL.
All other callers are checking for NULL and we can safely replace mem_cgroup_is_root() check by cg_proto != NULL which will be more straightforward (proto_cgroup returns NULL for the root memcg already).
Signed-off-by: Michal Hocko <mhocko@suse.cz> --- mm/memcontrol.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 559e3b2926e8..19ffae804076 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -322,8 +322,7 @@ void sock_update_memcg(struct sock *sk) rcu_read_lock(); memcg = mem_cgroup_from_task(current); cg_proto = sk->sk_prot->proto_cgroup(memcg); - if (!mem_cgroup_is_root(memcg) && - memcg_proto_active(cg_proto) && + if (cg_proto && memcg_proto_active(cg_proto) && css_tryget_online(&memcg->css)) { sk->sk_cgrp = cg_proto; } -- 2.1.4
| |