-
- Downloads
memcg: fix deadlock between lock_page_cgroup and mapping tree_lock
mapping->tree_lock can be acquired from interrupt context. Then, following dead lock can occur. Assume "A" as a page. CPU0: lock_page_cgroup(A) interrupted -> take mapping->tree_lock. CPU1: take mapping->tree_lock -> lock_page_cgroup(A) This patch tries to fix above deadlock by moving memcg's hook to out of mapping->tree_lock. charge/uncharge of pagecache/swapcache is protected by page lock, not tree_lock. After this patch, lock_page_cgroup() is not called under mapping->tree_lock. Signed-off-by:KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by:
Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Cc: Balbir Singh <balbir@in.ibm.com> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
Showing
- include/linux/swap.h 5 additions, 0 deletionsinclude/linux/swap.h
- mm/filemap.c 3 additions, 3 deletionsmm/filemap.c
- mm/memcontrol.c 3 additions, 1 deletionmm/memcontrol.c
- mm/swap_state.c 1 addition, 3 deletionsmm/swap_state.c
- mm/truncate.c 1 addition, 0 deletionsmm/truncate.c
- mm/vmscan.c 2 additions, 0 deletionsmm/vmscan.c
Loading
Please register or sign in to comment