• Hugh Dickins's avatar
    memcg: remove clear_page_cgroup and atomics · b9c565d5
    Hugh Dickins authored
    Remove clear_page_cgroup: it's an unhelpful helper, see for example how
    mem_cgroup_uncharge_page had to unlock_page_cgroup just in order to call it
    (serious races from that?  I'm not sure).
    
    Once that's gone, you can see it's pointless for page_cgroup's ref_cnt to be
    atomic: it's always manipulated under lock_page_cgroup, except where
    force_empty unilaterally reset it to 0 (and how does uncharge's
    atomic_dec_and_test protect against that?).
    
    Simplify this page_cgroup locking: if you've got the lock and the pc is
    attached, then the ref_cnt must be positive: VM_BUG_ONs to check that, and to
    check that pc->page matches page (we're on the way to finding why sometimes it
    doesn't, but this patch doesn't fix that).
    Signed-off-by: default avatarHugh Dickins <hugh@veritas.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Balbir Singh <balbir@linux.vnet.ibm.com>
    Acked-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Hirokazu Takahashi <taka@valinux.co.jp>
    Cc: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
    Cc: Paul Menage <menage@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b9c565d5
memcontrol.c 26.9 KB