2.5.55-rmk1: user space lossage
Andrew Morton
akpm at digeo.com
Thu Jan 23 05:06:27 EST 2003
David Woodhouse <dwmw2 at 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
_
More information about the linux-mtd
mailing list