Patchwork powerpc: mm: fix mmap errno when MAP_FIXED is set and mapping exceeds the allowed address space

login
register
mail settings
Submitter jmarchan@redhat.com
Date Jan. 15, 2014, 3:27 p.m.
Message ID <1389799631-3418-1-git-send-email-jmarchan@redhat.com>
Download mbox | patch
Permalink /patch/311259/
State Accepted
Commit 19751c07b3728748c1253627ce94e6906fa5e273
Headers show

Comments

jmarchan@redhat.com - Jan. 15, 2014, 3:27 p.m.
According to Posix, if MAP_FIXED is specified mmap shall set ENOMEM if
the requested mapping exceeds the allowed range for address space of
the process. The generic code set it right, but the specific powerpc
slice_get_unmapped_area() function currently returns -EINVAL in that
case.
This patch corrects it.

Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
---
 arch/powerpc/mm/slice.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Patch

diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
index 7ce9cf3..b0c75cc 100644
--- a/arch/powerpc/mm/slice.c
+++ b/arch/powerpc/mm/slice.c
@@ -408,7 +408,7 @@  unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len,
 	if (fixed && (addr & ((1ul << pshift) - 1)))
 		return -EINVAL;
 	if (fixed && addr > (mm->task_size - len))
-		return -EINVAL;
+		return -ENOMEM;
 
 	/* If hint, make sure it matches our alignment restrictions */
 	if (!fixed && addr) {