Commit cb532375 authored by Robin Holt's avatar Robin Holt Committed by Linus Torvalds

mm/ksm.c is doing an unneeded _notify in write_protect_page.

ksm.c's write_protect_page implements a lockless means of verifying a page
does not have any users of the page which are not accounted for via other
kernel tracking means.  It does this by removing the writable pte with TLB
flushes, checking the page_count against the total known users, and then
using set_pte_at_notify to make it a read-only entry.

An unneeded mmu_notifier callout is made in the case where the known users
does not match the page_count.  In that event, we are inserting the
identical pte and there is no need for the set_pte_at_notify, but rather
the simpler set_pte_at suffices.
Signed-off-by: default avatarRobin Holt <holt@sgi.com>
Acked-by: default avatarIzik Eidus <ieidus@redhat.com>
Acked-by: default avatarAndrea Arcangeli <aarcange@redhat.com>
Acked-by: default avatarHugh Dickins <hugh.dickins@tiscali.co.uk>
Cc: Chris Wright <chrisw@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 20072205
...@@ -751,7 +751,7 @@ static int write_protect_page(struct vm_area_struct *vma, struct page *page, ...@@ -751,7 +751,7 @@ static int write_protect_page(struct vm_area_struct *vma, struct page *page,
* page * page
*/ */
if (page_mapcount(page) + 1 + swapped != page_count(page)) { if (page_mapcount(page) + 1 + swapped != page_count(page)) {
set_pte_at_notify(mm, addr, ptep, entry); set_pte_at(mm, addr, ptep, entry);
goto out_unlock; goto out_unlock;
} }
entry = pte_wrprotect(entry); entry = pte_wrprotect(entry);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment