diff options
author | Hugh Dickins <hugh.dickins@tiscali.co.uk> | 2009-09-21 20:01:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-22 10:17:31 -0400 |
commit | 21333b2b66b805a360641568588e5a0bb06d9d1f (patch) | |
tree | c0ce4d31e31ae2d2b1ef975b00c0611a3099c7a3 /mm/rmap.c | |
parent | f8af4da3b4c14e7267c4ffb952079af3912c51c5 (diff) |
ksm: no debug in page_dup_rmap()
page_dup_rmap(), used on each mapped page when forking, was originally
just an inline atomic_inc of mapcount. 2.6.22 added CONFIG_DEBUG_VM
out-of-line checks to it, which would need to be ever-so-slightly
complicated to allow for the PageKsm() we're about to define.
But I think these checks never caught anything. And if it's coding errors
we're worried about, such checks should be in page_remove_rmap() too, not
just when forking; whereas if it's pagetable corruption we're worried
about, then they shouldn't be limited to CONFIG_DEBUG_VM.
Oh, just revert page_dup_rmap() to an inline atomic_inc of mapcount.
Signed-off-by: Hugh Dickins <hugh.dickins@tiscali.co.uk>
Signed-off-by: Chris Wright <chrisw@redhat.com>
Signed-off-by: Izik Eidus <ieidus@redhat.com>
Cc: Nick Piggin <npiggin@suse.de>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Rik van Riel <riel@redhat.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Hugh Dickins <hugh.dickins@tiscali.co.uk>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Lee Schermerhorn <lee.schermerhorn@hp.com>
Cc: Avi Kivity <avi@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/rmap.c')
-rw-r--r-- | mm/rmap.c | 21 |
1 files changed, 0 insertions, 21 deletions
@@ -710,27 +710,6 @@ void page_add_file_rmap(struct page *page) | |||
710 | } | 710 | } |
711 | } | 711 | } |
712 | 712 | ||
713 | #ifdef CONFIG_DEBUG_VM | ||
714 | /** | ||
715 | * page_dup_rmap - duplicate pte mapping to a page | ||
716 | * @page: the page to add the mapping to | ||
717 | * @vma: the vm area being duplicated | ||
718 | * @address: the user virtual address mapped | ||
719 | * | ||
720 | * For copy_page_range only: minimal extract from page_add_file_rmap / | ||
721 | * page_add_anon_rmap, avoiding unnecessary tests (already checked) so it's | ||
722 | * quicker. | ||
723 | * | ||
724 | * The caller needs to hold the pte lock. | ||
725 | */ | ||
726 | void page_dup_rmap(struct page *page, struct vm_area_struct *vma, unsigned long address) | ||
727 | { | ||
728 | if (PageAnon(page)) | ||
729 | __page_check_anon_rmap(page, vma, address); | ||
730 | atomic_inc(&page->_mapcount); | ||
731 | } | ||
732 | #endif | ||
733 | |||
734 | /** | 713 | /** |
735 | * page_remove_rmap - take down pte mapping from a page | 714 | * page_remove_rmap - take down pte mapping from a page |
736 | * @page: page to remove mapping from | 715 | * @page: page to remove mapping from |