aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Kwapulinski <[email protected]>2016-01-14 15:19:50 -0800
committerLinus Torvalds <[email protected]>2016-01-14 16:00:49 -0800
commitbc36f7017c39d1fe3c01aecd09cb2fe14753be90 (patch)
tree6bdaa15704de5b59058cf65abce655393b81598d
parent9f6c399ddc369856d787bd43ccd43b19ed1e4e32 (diff)
mm/mmap.c: remove incorrect MAP_FIXED flag comparison from mmap_region
The following flag comparison in mmap_region makes no sense: if (!(vm_flags & MAP_FIXED)) return -ENOMEM; The condition is always false and thus the above "return -ENOMEM" is never executed. The vm_flags must not be compared with MAP_FIXED flag. The vm_flags may only be compared with VM_* flags. MAP_FIXED has the same value as VM_MAYREAD. Hitting the rlimit is a slow path and find_vma_intersection should realize that there is no overlapping VMA for !MAP_FIXED case pretty quickly. Signed-off-by: Piotr Kwapulinski <[email protected]> Acked-by: Michal Hocko <[email protected]> Cc: Oleg Nesterov <[email protected]> Cc: Chris Metcalf <[email protected]> Reviewed-by: Naoya Horiguchi <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r--mm/mmap.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/mm/mmap.c b/mm/mmap.c
index 9da9c27c33a2..c311bfd8005b 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1551,9 +1551,6 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
* MAP_FIXED may remove pages of mappings that intersects with
* requested mapping. Account for the pages it would unmap.
*/
- if (!(vm_flags & MAP_FIXED))
- return -ENOMEM;
-
nr_pages = count_vma_pages_range(mm, addr, addr + len);
if (!may_expand_vm(mm, (len >> PAGE_SHIFT) - nr_pages))