[PATCH] unpaged: private write VM_RESERVED
authorHugh Dickins <hugh@veritas.com>
Tue, 22 Nov 2005 05:32:12 +0000 (21:32 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 22 Nov 2005 17:13:42 +0000 (09:13 -0800)
The PageReserved removal in 2.6.15-rc1 issued a "deprecated" message when you
tried to mmap or mprotect MAP_PRIVATE PROT_WRITE a VM_RESERVED, and failed
with -EACCES: because do_wp_page lacks the refinement to COW pages in those
areas, nor do we expect to find anonymous pages in them; and it seemed just
bloat to add code for handling such a peculiar case.  But immediately it
caused vbetool and ddcprobe (using lrmi) to fail.

So revert the "deprecated" messages, letting mmap and mprotect succeed.  But
leave do_wp_page's BUG_ON(vma->vm_flags & VM_RESERVED) in place until we've
added the code to do it right: so this particular patch is only good if the
app doesn't really need to write to that private area.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
mm/mmap.c
mm/mprotect.c

index 4f8def03428ce967d91f7a1fa738733d8a386758..11ca5927d5ff72575e2c34025a5f6e810d2ef7b4 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1076,17 +1076,6 @@ munmap_back:
                error = file->f_op->mmap(file, vma);
                if (error)
                        goto unmap_and_free_vma;
-               if ((vma->vm_flags & (VM_SHARED | VM_WRITE | VM_RESERVED))
-                                               == (VM_WRITE | VM_RESERVED)) {
-                       printk(KERN_WARNING "program %s is using MAP_PRIVATE, "
-                               "PROT_WRITE mmap of VM_RESERVED memory, which "
-                               "is deprecated. Please report this to "
-                               "linux-kernel@vger.kernel.org\n",current->comm);
-                       if (vma->vm_ops && vma->vm_ops->close)
-                               vma->vm_ops->close(vma);
-                       error = -EACCES;
-                       goto unmap_and_free_vma;
-               }
        } else if (vm_flags & VM_SHARED) {
                error = shmem_zero_setup(vma);
                if (error)
index 17a2b52b753b0c5ac855abeed9cc5a2934685bd0..653b8571c1ed10e86c94ae727147b77ce0e09788 100644 (file)
@@ -124,14 +124,6 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev,
         * a MAP_NORESERVE private mapping to writable will now reserve.
         */
        if (newflags & VM_WRITE) {
-               if (oldflags & VM_RESERVED) {
-                       BUG_ON(oldflags & VM_WRITE);
-                       printk(KERN_WARNING "program %s is using MAP_PRIVATE, "
-                               "PROT_WRITE mprotect of VM_RESERVED memory, "
-                               "which is deprecated. Please report this to "
-                               "linux-kernel@vger.kernel.org\n",current->comm);
-                       return -EACCES;
-               }
                if (!(oldflags & (VM_ACCOUNT|VM_WRITE|VM_SHARED|VM_HUGETLB))) {
                        charged = nrpages;
                        if (security_vm_enough_memory(charged))