lkml.org 
[lkml]   [2009]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[BUGFIX][PATCH(resend) mmotm] memcg: try_get_mem_cgroup_from_swapcache fix (Re: 2.6.30 -mm merge plans)
    >     memcg-use-css-id.patch
    > memcg-hierarchical-stat.patch
    > memcg-fix-shrinking-memory-to-return-ebusy-by-fixing-retry-algorithm.patch
    > memcg-fix-oom-killer-under-memcg.patch
    > memcg-fix-oom-killer-under-memcg-fix2.patch
    > memcg-fix-oom-killer-under-memcg-fix.patch
    > memcg-show-memcg-information-during-oom.patch
    > memcg-show-memcg-information-during-oom-fix2.patch
    > memcg-show-memcg-information-during-oom-fix.patch
    > memcg-show-memcg-information-during-oom-fix-fix.patch
    > memcg-show-memcg-information-during-oom-fix-fix-checkpatch-fixes.patch
    > memcg-remove-mem_cgroup_calc_mapped_ratio-take2.patch
    > memcg-remove-mem_cgroup_reclaim_imbalance-remnants.patch
    > memcg-charge-swapcache-to-proper-memcg.patch
    > cgroups-use-css-id-in-swap-cgroup-for-saving-memory-v5.patch
    > memcg-remove-redundant-message-at-swapon.patch
    >
    > Merge
    >
    This patch is fix for cgroups-use-css-id-in-swap-cgroup-for-saving-memory-v5.patch.

    I think it would be better to fold them.

    ===
    From: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>

    css_tryget can be called twice in !PageCgroupUsed case.

    Signed-off-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
    Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujtsu.com>
    ---

    mm/memcontrol.c | 10 ++++------
    1 files changed, 4 insertions(+), 6 deletions(-)

    diff --git a/mm/memcontrol.c b/mm/memcontrol.c
    index 5de6be9..55dea59 100644
    --- a/mm/memcontrol.c
    +++ b/mm/memcontrol.c
    @@ -1027,9 +1027,11 @@ static struct mem_cgroup *try_get_mem_cgroup_from_swapcache(struct page *page)
    /*
    * Used bit of swapcache is solid under page lock.
    */
    - if (PageCgroupUsed(pc))
    + if (PageCgroupUsed(pc)) {
    mem = pc->mem_cgroup;
    - else {
    + if (mem && !css_tryget(&mem->css))
    + mem = NULL;
    + } else {
    ent.val = page_private(page);
    id = lookup_swap_cgroup(ent);
    rcu_read_lock();
    @@ -1038,10 +1040,6 @@ static struct mem_cgroup *try_get_mem_cgroup_from_swapcache(struct page *page)
    mem = NULL;
    rcu_read_unlock();
    }
    - if (!mem)
    - return NULL;
    - if (!css_tryget(&mem->css))
    - return NULL;
    return mem;
    }


    \
     
     \ /
      Last update: 2009-03-24 09:05    [W:0.029 / U:0.436 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site