patch-2.4.0-test8 linux/kernel/ptrace.c

Next file: linux/kernel/sched.c
Previous file: linux/kernel/ksyms.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test7/linux/kernel/ptrace.c linux/kernel/ptrace.c
@@ -44,8 +44,12 @@
 	if (write && (!pte_write(*pgtable) || !pte_dirty(*pgtable)))
 		goto fault_in_page;
 	page = pte_page(*pgtable);
-	if ((!VALID_PAGE(page)) || PageReserved(page))
-		return 0;
+
+	/* ZERO_PAGE is special: reads from it are ok even though it's marked reserved */
+	if (page != ZERO_PAGE(addr) || write) {
+		if ((!VALID_PAGE(page)) || PageReserved(page))
+			return 0;
+	}
 	flush_cache_page(vma, addr);
 
 	if (write) {

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)