diff options
Diffstat (limited to 'mm/mmap.c')
| -rw-r--r-- | mm/mmap.c | 11 | 
1 files changed, 2 insertions, 9 deletions
diff --git a/mm/mmap.c b/mm/mmap.c index 971dd2cb77d2..79bcc9f92e48 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -612,8 +612,6 @@ static unsigned long count_vma_pages_range(struct mm_struct *mm,  void __vma_link_rb(struct mm_struct *mm, struct vm_area_struct *vma,  		struct rb_node **rb_link, struct rb_node *rb_parent)  { -	WARN_ONCE(vma->vm_file && !vma->vm_ops, "missing vma->vm_ops"); -  	/* Update tracking information for the gap following the new vma. */  	if (vma->vm_next)  		vma_gap_update(vma->vm_next); @@ -1492,13 +1490,14 @@ SYSCALL_DEFINE1(old_mmap, struct mmap_arg_struct __user *, arg)  int vma_wants_writenotify(struct vm_area_struct *vma)  {  	vm_flags_t vm_flags = vma->vm_flags; +	const struct vm_operations_struct *vm_ops = vma->vm_ops;  	/* If it was private or non-writable, the write bit is already clear */  	if ((vm_flags & (VM_WRITE|VM_SHARED)) != ((VM_WRITE|VM_SHARED)))  		return 0;  	/* The backer wishes to know when pages are first written to? */ -	if (vma->vm_ops && vma->vm_ops->page_mkwrite) +	if (vm_ops && (vm_ops->page_mkwrite || vm_ops->pfn_mkwrite))  		return 1;  	/* The open routine did something to the protections that pgprot_modify @@ -1638,12 +1637,6 @@ unsigned long mmap_region(struct file *file, unsigned long addr,  		 */  		WARN_ON_ONCE(addr != vma->vm_start); -		/* All file mapping must have ->vm_ops set */ -		if (!vma->vm_ops) { -			static const struct vm_operations_struct dummy_ops = {}; -			vma->vm_ops = &dummy_ops; -		} -  		addr = vma->vm_start;  		vm_flags = vma->vm_flags;  	} else if (vm_flags & VM_SHARED) {  | 
