projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
096a7cf
)
mm, thp: drop page_table_lock to uncharge memcg pages
author
David Rientjes
<
[email protected]
>
Tue, 29 May 2012 22:06:26 +0000
(15:06 -0700)
committer
Linus Torvalds
<
[email protected]
>
Tue, 29 May 2012 23:22:20 +0000
(16:22 -0700)
mm->page_table_lock is hotly contested for page fault tests and isn't
necessary to do mem_cgroup_uncharge_page() in do_huge_pmd_wp_page().
Signed-off-by: David Rientjes <
[email protected]
>
Cc: KAMEZAWA Hiroyuki <
[email protected]
>
Cc: Andrea Arcangeli <
[email protected]
>
Acked-by: Johannes Weiner <
[email protected]
>
Reviewed-by: Andrea Arcangeli <
[email protected]
>
Signed-off-by: Andrew Morton <
[email protected]
>
Signed-off-by: Linus Torvalds <
[email protected]
>
mm/huge_memory.c
patch
|
blob
|
history
diff --git
a/mm/huge_memory.c
b/mm/huge_memory.c
index edfeb8cb23df27ad77716408962687ceed4ba342..d0def42c121bb570315d084b75d38083f53597c3 100644
(file)
--- a/
mm/huge_memory.c
+++ b/
mm/huge_memory.c
@@
-973,8
+973,10
@@
int do_huge_pmd_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
spin_lock(&mm->page_table_lock);
put_page(page);
if (unlikely(!pmd_same(*pmd, orig_pmd))) {
+ spin_unlock(&mm->page_table_lock);
mem_cgroup_uncharge_page(new_page);
put_page(new_page);
+ goto out;
} else {
pmd_t entry;
VM_BUG_ON(!PageHead(page));