diff options
Diffstat (limited to 'mm/mprotect.c')
| -rw-r--r-- | mm/mprotect.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/mm/mprotect.c b/mm/mprotect.c index 4de546899dc..a5bf31c2737 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -26,6 +26,13 @@  #include <asm/cacheflush.h>  #include <asm/tlbflush.h> +#ifndef pgprot_modify +static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) +{ +	return newprot; +} +#endif +  static void change_pte_range(struct mm_struct *mm, pmd_t *pmd,  		unsigned long addr, unsigned long end, pgprot_t newprot,  		int dirty_accountable) @@ -192,7 +199,9 @@ success:  	 * held in write mode.  	 */  	vma->vm_flags = newflags; -	vma->vm_page_prot = vm_get_page_prot(newflags); +	vma->vm_page_prot = pgprot_modify(vma->vm_page_prot, +					  vm_get_page_prot(newflags)); +  	if (vma_wants_writenotify(vma)) {  		vma->vm_page_prot = vm_get_page_prot(newflags & ~VM_SHARED);  		dirty_accountable = 1;  |