Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3ed75eb8 authored by Coly Li's avatar Coly Li Committed by Linus Torvalds
Browse files

setup vma->vm_page_prot by vm_get_page_prot()



This patch uses vm_get_page_prot() to setup vma->vm_page_prot.

Though inside vm_get_page_prot() the protection flags is AND with
(VM_READ|VM_WRITE|VM_EXEC|VM_SHARED), it does not hurt correct code.

Signed-off-by: default avatarColy Li <coyli@suse.de>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 1c7037db
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -127,8 +127,8 @@ ia64_init_addr_space (void)
		vma->vm_mm = current->mm;
		vma->vm_start = current->thread.rbs_bot & PAGE_MASK;
		vma->vm_end = vma->vm_start + PAGE_SIZE;
		vma->vm_page_prot = protection_map[VM_DATA_DEFAULT_FLAGS & 0x7];
		vma->vm_flags = VM_DATA_DEFAULT_FLAGS|VM_GROWSUP|VM_ACCOUNT;
		vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
		down_write(&current->mm->mmap_sem);
		if (insert_vm_struct(current->mm, vma)) {
			up_write(&current->mm->mmap_sem);
+1 −1
Original line number Diff line number Diff line
@@ -234,7 +234,7 @@ static int __bprm_mm_init(struct linux_binprm *bprm)
	vma->vm_start = vma->vm_end - PAGE_SIZE;

	vma->vm_flags = VM_STACK_FLAGS;
	vma->vm_page_prot = protection_map[vma->vm_flags & 0x7];
	vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
	err = insert_vm_struct(mm, vma);
	if (err) {
		up_write(&mm->mmap_sem);
+4 −7
Original line number Diff line number Diff line
@@ -1048,8 +1048,7 @@ int vma_wants_writenotify(struct vm_area_struct *vma)

	/* The open routine did something to the protections already? */
	if (pgprot_val(vma->vm_page_prot) !=
	    pgprot_val(protection_map[vm_flags &
		    (VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)]))
	    pgprot_val(vm_get_page_prot(vm_flags)))
		return 0;

	/* Specialty mapping? */
@@ -1130,8 +1129,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
	vma->vm_start = addr;
	vma->vm_end = addr + len;
	vma->vm_flags = vm_flags;
	vma->vm_page_prot = protection_map[vm_flags &
				(VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)];
	vma->vm_page_prot = vm_get_page_prot(vm_flags);
	vma->vm_pgoff = pgoff;

	if (file) {
@@ -2002,8 +2000,7 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
	vma->vm_end = addr + len;
	vma->vm_pgoff = pgoff;
	vma->vm_flags = flags;
	vma->vm_page_prot = protection_map[flags &
				(VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)];
	vma->vm_page_prot = vm_get_page_prot(flags);
	vma_link(mm, vma, prev, rb_link, rb_parent);
out:
	mm->total_vm += len >> PAGE_SHIFT;
@@ -2209,7 +2206,7 @@ int install_special_mapping(struct mm_struct *mm,
	vma->vm_end = addr + len;

	vma->vm_flags = vm_flags | mm->def_flags;
	vma->vm_page_prot = protection_map[vma->vm_flags & 7];
	vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);

	vma->vm_ops = &special_mapping_vmops;
	vma->vm_private_data = pages;
+2 −4
Original line number Diff line number Diff line
@@ -192,11 +192,9 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
	 * held in write mode.
	 */
	vma->vm_flags = newflags;
	vma->vm_page_prot = protection_map[newflags &
		(VM_READ|VM_WRITE|VM_EXEC|VM_SHARED)];
	vma->vm_page_prot = vm_get_page_prot(newflags);
	if (vma_wants_writenotify(vma)) {
		vma->vm_page_prot = protection_map[newflags &
			(VM_READ|VM_WRITE|VM_EXEC)];
		vma->vm_page_prot = vm_get_page_prot(newflags);
		dirty_accountable = 1;
	}