X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=blobdiff_plain;f=mm%2Fmmap.c;h=f04b71c476648e16173b247f3e9af7e832d08e4d;hp=76cabd2dde18c8cb7ec15d79389cd5e9eae777ac;hb=5dc8e6980d28cb1021c03b30ee95a06b61ce0dbb;hpb=d80de620e38ecd1b40217d361604fb7a839f07ad;ds=inline diff --git a/mm/mmap.c b/mm/mmap.c index 76cabd2dde18..f04b71c47664 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1205,11 +1205,9 @@ unsigned long mmap_region(struct file *file, unsigned long addr, { struct mm_struct *mm = current->mm; struct vm_area_struct *vma, *prev; - int correct_wcount = 0; int error; struct rb_node **rb_link, *rb_parent; unsigned long charged = 0; - struct inode *inode = file ? file->f_path.dentry->d_inode : NULL; /* Clear old maps */ error = -ENOMEM; @@ -1280,7 +1278,6 @@ munmap_back: error = deny_write_access(file); if (error) goto free_vma; - correct_wcount = 1; } vma->vm_file = get_file(file); error = file->f_op->mmap(file, vma); @@ -1319,11 +1316,10 @@ munmap_back: } vma_link(mm, vma, prev, rb_link, rb_parent); - file = vma->vm_file; - /* Once vma denies write, undo our temporary denial count */ - if (correct_wcount) - atomic_inc(&inode->i_writecount); + if (vm_flags & VM_DENYWRITE) + allow_write_access(file); + file = vma->vm_file; out: perf_event_mmap(vma); @@ -1337,8 +1333,8 @@ out: return addr; unmap_and_free_vma: - if (correct_wcount) - atomic_inc(&inode->i_writecount); + if (vm_flags & VM_DENYWRITE) + allow_write_access(file); vma->vm_file = NULL; fput(file);