Skip to content

Commit

Permalink
[PATCH] unpaged: private write VM_RESERVED
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Hugh Dickins authored and Linus Torvalds committed Nov 22, 2005
1 parent ed5297a commit 83e9b7e
Show file tree
Hide file tree
Showing 2 changed files with 0 additions and 19 deletions.
11 changes: 0 additions & 11 deletions mm/mmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -1076,17 +1076,6 @@ unsigned long do_mmap_pgoff(struct file * file, unsigned long addr,
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 "
"[email protected]\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)
Expand Down
8 changes: 0 additions & 8 deletions mm/mprotect.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 "
"[email protected]\n",current->comm);
return -EACCES;
}
if (!(oldflags & (VM_ACCOUNT|VM_WRITE|VM_SHARED|VM_HUGETLB))) {
charged = nrpages;
if (security_vm_enough_memory(charged))
Expand Down

0 comments on commit 83e9b7e

Please sign in to comment.