diff options
-rw-r--r-- | mm/mmap.c | 5 | ||||
-rw-r--r-- | mm/mremap.c | 6 |
2 files changed, 6 insertions, 5 deletions
@@ -201,6 +201,8 @@ SYSCALL_DEFINE1(brk, unsigned long, brk) | |||
201 | bool downgraded = false; | 201 | bool downgraded = false; |
202 | LIST_HEAD(uf); | 202 | LIST_HEAD(uf); |
203 | 203 | ||
204 | brk = untagged_addr(brk); | ||
205 | |||
204 | if (down_write_killable(&mm->mmap_sem)) | 206 | if (down_write_killable(&mm->mmap_sem)) |
205 | return -EINTR; | 207 | return -EINTR; |
206 | 208 | ||
@@ -1587,6 +1589,8 @@ unsigned long ksys_mmap_pgoff(unsigned long addr, unsigned long len, | |||
1587 | struct file *file = NULL; | 1589 | struct file *file = NULL; |
1588 | unsigned long retval; | 1590 | unsigned long retval; |
1589 | 1591 | ||
1592 | addr = untagged_addr(addr); | ||
1593 | |||
1590 | if (!(flags & MAP_ANONYMOUS)) { | 1594 | if (!(flags & MAP_ANONYMOUS)) { |
1591 | audit_mmap_fd(fd, flags); | 1595 | audit_mmap_fd(fd, flags); |
1592 | file = fget(fd); | 1596 | file = fget(fd); |
@@ -2885,6 +2889,7 @@ EXPORT_SYMBOL(vm_munmap); | |||
2885 | 2889 | ||
2886 | SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) | 2890 | SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) |
2887 | { | 2891 | { |
2892 | addr = untagged_addr(addr); | ||
2888 | profile_munmap(addr); | 2893 | profile_munmap(addr); |
2889 | return __vm_munmap(addr, len, true); | 2894 | return __vm_munmap(addr, len, true); |
2890 | } | 2895 | } |
diff --git a/mm/mremap.c b/mm/mremap.c index 64c9a3b8be0a..1fc8a29fbe3f 100644 --- a/mm/mremap.c +++ b/mm/mremap.c | |||
@@ -606,12 +606,8 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, | |||
606 | LIST_HEAD(uf_unmap_early); | 606 | LIST_HEAD(uf_unmap_early); |
607 | LIST_HEAD(uf_unmap); | 607 | LIST_HEAD(uf_unmap); |
608 | 608 | ||
609 | /* | ||
610 | * Architectures may interpret the tag passed to mmap as a background | ||
611 | * colour for the corresponding vma. For mremap we don't allow tagged | ||
612 | * new_addr to preserve similar behaviour to mmap. | ||
613 | */ | ||
614 | addr = untagged_addr(addr); | 609 | addr = untagged_addr(addr); |
610 | new_addr = untagged_addr(new_addr); | ||
615 | 611 | ||
616 | if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE)) | 612 | if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE)) |
617 | return ret; | 613 | return ret; |