[lkml]   [2010]   [Feb]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[62/93] sh: Couple kernel and user write page perm bits for CONFIG_X2TLB
2.6.32-stable review patch.  If anyone has any objections, please let us know.


From: Matt Fleming <>

commit fcb4ebd678858850e8b029909064175cb627868d upstream.

pte_write() should check whether the permissions include either the user
or kernel write permission bits. Likewise, pte_wrprotect() needs to
remove both the kernel and user write bits.

Without this patch handle_tlbmiss() doesn't handle faulting in pages
from the P3 area (our vmalloc space) because of a write. Mappings of the
P3 space have the _PAGE_EXT_KERN_WRITE bit but not _PAGE_EXT_USER_WRITE.

Signed-off-by: Matt Fleming <>
Signed-off-by: Paul Mundt <>
Signed-off-by: Greg Kroah-Hartman <>

arch/sh/include/asm/pgtable_32.h | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

--- a/arch/sh/include/asm/pgtable_32.h
+++ b/arch/sh/include/asm/pgtable_32.h
@@ -344,7 +344,8 @@ static inline void set_pte(pte_t *ptep,
#define pte_special(pte) ((pte).pte_low & _PAGE_SPECIAL)

-#define pte_write(pte) ((pte).pte_high & _PAGE_EXT_USER_WRITE)
+#define pte_write(pte) \
+ ((pte).pte_high & (_PAGE_EXT_USER_WRITE | _PAGE_EXT_KERN_WRITE))
#define pte_write(pte) ((pte).pte_low & _PAGE_RW)
@@ -358,7 +359,7 @@ static inline pte_t pte_##fn(pte_t pte)
* individually toggled (and user permissions are entirely decoupled from
* kernel permissions), we attempt to couple them a bit more sanely here.
-PTE_BIT_FUNC(high, wrprotect, &= ~_PAGE_EXT_USER_WRITE);
PTE_BIT_FUNC(high, mkhuge, |= _PAGE_SZHUGE);

 \ /
  Last update: 2010-02-19 18:07    [W:0.180 / U:9.452 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site