summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Bottomley <james.bottomley@steeleye.com>2003-09-03 20:13:28 -0700
committerLinus Torvalds <torvalds@home.osdl.org>2003-09-03 20:13:28 -0700
commit31412915d5d1de833892ac14d61db02ec8dce625 (patch)
tree4e71c6c3aa57a25dd9eadd3f4019ad8b609b3821
parentad425cf493fb719430154b5db87242ef3ea6c463 (diff)
[PATCH] fix remap of shared read only mappings
When mmap MAP_SHARED is done on a file, it gets marked with VM_MAYSHARE and, if it's read/write, VM_SHARED. However, if it is remapped with mremap(), the MAP_SHARED is only passed into the new mapping based on VM_SHARED. This means that remapped read only MAP_SHARED mappings lose VM_MAYSHARE. This is causing us a problem on parisc because we have to align all shared mappings carefully to mitigate cache aliasing problems. The fix is to key passing the MAP_SHARED flag back into the remapped are off VM_MAYSHARE not VM_SHARED.
-rw-r--r--mm/mremap.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/mremap.c b/mm/mremap.c
index d9180f18ad6c..0412a204cb69 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -420,7 +420,7 @@ unsigned long do_mremap(unsigned long addr,
if (flags & MREMAP_MAYMOVE) {
if (!(flags & MREMAP_FIXED)) {
unsigned long map_flags = 0;
- if (vma->vm_flags & VM_SHARED)
+ if (vma->vm_flags & VM_MAYSHARE)
map_flags |= MAP_SHARED;
new_addr = get_unmapped_area(vma->vm_file, 0, new_len,