Messages in this thread |  | | Date | Tue, 11 Dec 2012 16:54:32 +0100 | From | Michal Hocko <> | Subject | Re: [patch v2 3/6] memcg: rework mem_cgroup_iter to use cgroup iterators |
| |
On Sun 09-12-12 11:39:50, Ying Han wrote: > On Mon, Nov 26, 2012 at 10:47 AM, Michal Hocko <mhocko@suse.cz> wrote: [...] > > if (reclaim) { > > - iter->position = id; > > + struct mem_cgroup *curr = memcg; > > + > > + if (last_visited) > > + css_put(&last_visited->css); ^^^^^^^^^^^ here > > + > > + if (css && !memcg) > > + curr = mem_cgroup_from_css(css); > > + > > + /* make sure that the cached memcg is not removed */ > > + if (curr) > > + css_get(&curr->css); > > + iter->last_visited = curr; > > Here we take extra refcnt for last_visited, and assume it is under > target reclaim which then calls mem_cgroup_iter_break() and we leaked > a refcnt of the target memcg css.
I think you are not right here. The extra reference is kept for iter->last_visited and it will be dropped the next time somebody sees the same zone-priority iter. See above.
Or have I missed your question?
[...] -- Michal Hocko SUSE Labs
|  |