All of lore.kernel.org
 help / color / mirror / Atom feed
* [bugfix] fix do_wp_page_mk_pte_writable() in 2.6.10-rc2-mm3
@ 2004-11-22 11:17 William Lee Irwin III
  0 siblings, 0 replies; only message in thread
From: William Lee Irwin III @ 2004-11-22 11:17 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

On Sun, Nov 21, 2004 at 10:39:29PM -0800, Andrew Morton wrote:
> 4level-core-patch.patch
>   4level core patch

vma->vm_ops->page_mkwrite() is supposed to be able to sleep, but this
function doesn't unmap the pte across the call and worse yet, reuses
the pte across a drop and reacquisition of ->page_table_lock.


Index: mm3-2.6.10-rc2/mm/memory.c
===================================================================
--- mm3-2.6.10-rc2.orig/mm/memory.c	2004-11-22 02:54:12.815541779 -0800
+++ mm3-2.6.10-rc2/mm/memory.c	2004-11-22 02:57:22.095766811 -0800
@@ -1268,6 +1268,7 @@
 static inline int do_wp_page_mk_pte_writable(struct mm_struct *mm,
 					     struct vm_area_struct *vma,
 					     unsigned long address,
+					     pmd_t *pmd,
 					     pte_t *page_table,
 					     struct page *old_page,
 					     pte_t pte)
@@ -1279,6 +1280,7 @@
 	if (vma->vm_ops && vma->vm_ops->page_mkwrite) {
 		/* Notify the page owner without the lock held so they can
 		 * sleep if they want to */
+		pte_unmap(page_table);
 		spin_unlock(&mm->page_table_lock);
 
 		if (vma->vm_ops->page_mkwrite(vma, old_page) < 0)
@@ -1291,6 +1293,7 @@
 		 * return, as we can count on the MMU to tell us if they didn't
 		 * also make it writable
 		 */
+		page_table = pte_offset_map(pmd, address);
 		if (!pte_same(*page_table, pte))
 			goto minor_fault;
 	}
@@ -1352,7 +1355,7 @@
 		unlock_page(old_page);
 		if (reuse)
 			/* We can just make the PTE writable */
-			return do_wp_page_mk_pte_writable(mm, vma, address,
+			return do_wp_page_mk_pte_writable(mm, vma, address, pmd,
 							  page_table, old_page,
 							  pte);
 	}

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-11-22 11:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-11-22 11:17 [bugfix] fix do_wp_page_mk_pte_writable() in 2.6.10-rc2-mm3 William Lee Irwin III

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.