Re: Check _PAGE_PROTNONE bit in uvtop()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>From 67c99f8b59a3fa8a098967237ec1687b91632f63 Mon Sep 17 00:00:00 2001
From: HATAYAMA Daisuke <d.hatayama@xxxxxxxxxxxxxx>
Date: Thu, 28 Apr 2011 07:59:51 +0900
Subject: [PATCH 5/5] ia64: Add _PAGE_PROTNONE check

The variable page_present in ia64_translate_pte() has type int with
4-byte length and _PAGE_PROTNONE bit on ia64 is 63. (!!) operation is
added in order to deal with overflow.
---
 ia64.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/ia64.c b/ia64.c
index 9f8c06d..5b1f99e 100755
--- a/ia64.c
+++ b/ia64.c
@@ -893,7 +893,7 @@ ia64_vtop_4l(ulong vaddr, physaddr_t *paddr, ulong *pgd, int verbose, int usr)
         if (verbose)
                 fprintf(fp, "   PTE: %lx => %lx\n", (ulong)page_table, pte);
 
-        if (!(pte & (_PAGE_P))) {
+        if (!(pte & (_PAGE_P | _PAGE_PROTNONE))) {
 		if (usr)
 		  	*paddr = pte;
 		if (pte && verbose) {
@@ -971,7 +971,7 @@ ia64_vtop(ulong vaddr, physaddr_t *paddr, ulong *pgd, int verbose, int usr)
         if (verbose)
                 fprintf(fp, "   PTE: %lx => %lx\n", (ulong)page_table, pte);
 
-        if (!(pte & (_PAGE_P))) {
+        if (!(pte & (_PAGE_P | _PAGE_PROTNONE))) {
 		if (usr)
 		  	*paddr = pte;
 		if (pte && verbose) {
@@ -1237,7 +1237,7 @@ ia64_translate_pte(ulong pte, void *physaddr, ulonglong unused)
 	ulong paddr;
 
         paddr = pte & _PFN_MASK;
-	page_present = pte & _PAGE_P;
+	page_present = !!(pte & (_PAGE_P | _PAGE_PROTNONE));
 
 	if (physaddr) {
 		*((ulong *)physaddr) = paddr;
-- 
1.7.4.4

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility

[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux