Messages in this thread Patch in this message | | | Date | Thu, 23 Jan 2003 02:06:27 -0800 | From | Andrew Morton <> | Subject | Re: 2.5.55-rmk1: user space lossage |
| |
David Woodhouse <dwmw2@infradead.org> wrote: > > > > - if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_WRITE)) > +- if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_WRITE)) > ++ if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE))
Yup.
We cannot clear VM_MAYWRITE in there - it turns writeable MAP_PRIVATE mappings into readonly ones.
So change it back to the 2.4 form - disallow a writeable MAP_SHARED mapping against filesystems which do no implement ->writepage().
filemap.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-)
diff -puN mm/filemap.c~generic_file_readonly_mmap-fix mm/filemap.c --- 25/mm/filemap.c~generic_file_readonly_mmap-fix 2003-01-23 01:55:41.000000000 -0800 +++ 25-akpm/mm/filemap.c 2003-01-23 02:04:05.000000000 -0800 @@ -1308,11 +1308,13 @@ int generic_file_mmap(struct file * file return 0; } +/* + * This is for filesystems which do not implement ->writepage. + */ int generic_file_readonly_mmap(struct file *file, struct vm_area_struct *vma) { - if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_WRITE)) + if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE)) return -EINVAL; - vma->vm_flags &= ~VM_MAYWRITE; return generic_file_mmap(file, vma); } #else _
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |