Messages in this thread | | | Date | Thu, 1 Mar 2012 11:00:35 +0100 | From | Johannes Weiner <> | Subject | Re: [PATCH v2 next] memcg: fix deadlock by avoiding stat lock when anon |
| |
On Wed, Feb 29, 2012 at 06:44:59PM -0800, Hugh Dickins wrote: > Fix deadlock in "memcg: use new logic for page stat accounting". > > page_remove_rmap() first calls mem_cgroup_begin_update_page_stat(), > which may take move_lock_mem_cgroup(), unlocked at the end of > page_remove_rmap() by mem_cgroup_end_update_page_stat(). > > The PageAnon case never needs to mem_cgroup_dec_page_stat(page, > MEMCG_NR_FILE_MAPPED); but it often needs to mem_cgroup_uncharge_page(), > which does lock_page_cgroup(), while holding that move_lock_mem_cgroup(). > Whereas mem_cgroup_move_account() calls move_lock_mem_cgroup() while > holding lock_page_cgroup(). > > Since mem_cgroup_begin and end are unnecessary here for PageAnon, > simply avoid the deadlock and wasted calls in that case. > > Signed-off-by: Hugh Dickins <hughd@google.com>
Agreed, let's keep that lock ordering for now, and the comment makes it clear. Thanks!
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
| |