瀏覽代碼

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

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>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
jmarchan@redhat.com 11 年之前
父節點
當前提交
19751c07b3
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      arch/powerpc/mm/slice.c

+ 1 - 1
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) {