login
Header Space

 
 

Re: [BUGFIX] x86_64: NX bit handling in change_page_attr

Previous thread: NFS client show nothing for "ls" command. by gshan on Friday, August 17, 2007 - 12:49 am. (2 messages)

Next thread: [PATCH One-liner] Bug fix of cfag12864b by Max Extreme on Friday, August 17, 2007 - 2:03 am. (1 message)
To: Andi Kleen <ak@...>
Cc: <linux-kernel@...>
Date: Friday, August 17, 2007 - 1:28 am

This patch fixes a bug of change_page_attr/change_page_attr_addr on
Intel x86_64 CPU. After changing page attribute to be executable with
these functions, the page remains un-executable on Intel x86_64
CPU. Because on Intel x86_64 CPU, only if the "NX" bits of all four
level page tables are cleared, the corresponding page is executable
(refer to section 4.13.2 of Intel 64 and IA-32 Architectures Software
Developer's Manual). So, the bug is fixed through clearing the "NX"
bit of PMD when splitting the huge PMD.

Signed-off-by: Huang Ying &lt;ying.huang@intel.com&gt;

---

Index: linux-2.6.23-rc2-mm2/arch/x86_64/mm/pageattr.c
===================================================================
--- linux-2.6.23-rc2-mm2.orig/arch/x86_64/mm/pageattr.c	2007-08-17 12:50:25.000000000 +0800
+++ linux-2.6.23-rc2-mm2/arch/x86_64/mm/pageattr.c	2007-08-17 12:50:48.000000000 +0800
@@ -147,6 +147,7 @@
 			split = split_large_page(address, prot, ref_prot2);
 			if (!split)
 				return -ENOMEM;
+			pgprot_val(ref_prot2) &amp;= ~_PAGE_NX;
 			set_pte(kpte, mk_pte(split, ref_prot2));
 			kpte_page = split;
 		}
-
To: Huang, Ying <ying.huang@...>
Cc: Andi Kleen <ak@...>, <linux-kernel@...>
Date: Tuesday, September 11, 2007 - 11:23 pm

What happened with this?  Still valid?
-
To: Andrew Morton <akpm@...>
Cc: Huang, Ying <ying.huang@...>, <linux-kernel@...>
Date: Wednesday, September 12, 2007 - 9:35 am

The bug is probably latent there, but I don't think it can affect anything
in the kernel because nothing in the kernel should change NX status
as far as I know.

Where did you see it? 

Anyways I would prefer to only clear the PMD NX when NX status actually 
changes on the PTE.Can you do that change? 

Anyways; it's really not very important.

-Andi
-
To: Andi Kleen <ak@...>
Cc: Andrew Morton <akpm@...>, <linux-kernel@...>
Date: Wednesday, September 12, 2007 - 9:12 pm

I found the problem for EFI runtime service supporting. Where the EFI

This change is sufficient for Intel CPU. Because the NX bit of PTE is
still there, no page will be made executable if not been set explicitly
through PTE. For AMD CPU, will the page be made executable if the NX bit
of PMD is cleared and the NX bit of PTE is set? If so, I will do the

It is needed by EFI runtime service supporting.

Best Regards,
Huang Ying
-
To: Andrew Morton <akpm@...>
Cc: Andi Kleen <ak@...>, <linux-kernel@...>
Date: Wednesday, September 12, 2007 - 2:18 am

I am waiting for reviewing or merging. And I think it is still valid.

Best Regards,
Huang Ying
-
Previous thread: NFS client show nothing for "ls" command. by gshan on Friday, August 17, 2007 - 12:49 am. (2 messages)

Next thread: [PATCH One-liner] Bug fix of cfag12864b by Max Extreme on Friday, August 17, 2007 - 2:03 am. (1 message)
speck-geostationary