[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190920122907.GG2507@uranus.lan>
Date: Fri, 20 Sep 2019 15:29:07 +0300
From: Cyrill Gorcunov <gorcunov@...il.com>
To: LKML <linux-kernel@...r.kernel.org>
Cc: Linux MM <linux-mm@...ck.org>,
Johannes Weiner <hannes@...xchg.org>,
Michal Hocko <mhocko@...nel.org>,
Vladimir Davydov <vdavydov.dev@...il.com>,
Kirill Tkhai <ktkhai@...tuozzo.com>
Subject: [PATCH] mm, memcg: assign shrinker_map before kvfree
Currently there is a small gap between fetching pointer, calling
kvfree and assign its value to nil. In current callgraph it is
not a problem (since memcg_free_shrinker_maps is running from
memcg_alloc_shrinker_maps and mem_cgroup_css_free only) still
this looks suspicious and we can easily eliminate the gap at all.
Cc: Johannes Weiner <hannes@...xchg.org>
Cc: Michal Hocko <mhocko@...nel.org>
Cc: Vladimir Davydov <vdavydov.dev@...il.com>
Cc: Kirill Tkhai <ktkhai@...tuozzo.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@...il.com>
---
mm/memcontrol.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-tip.git/mm/memcontrol.c
===================================================================
--- linux-tip.git.orig/mm/memcontrol.c
+++ linux-tip.git/mm/memcontrol.c
@@ -364,9 +364,9 @@ static void memcg_free_shrinker_maps(str
for_each_node(nid) {
pn = mem_cgroup_nodeinfo(memcg, nid);
map = rcu_dereference_protected(pn->shrinker_map, true);
+ rcu_assign_pointer(pn->shrinker_map, NULL);
if (map)
kvfree(map);
- rcu_assign_pointer(pn->shrinker_map, NULL);
}
}
Powered by blists - more mailing lists