mlock: revert mainline handling of mlock error return
This change is intended to make mlock() error returns correct. make_page_present() is a lower level function used by more than mlock(). Subsequent patch[es] will add this error return fixup in an mlock specific path. Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e0f79b8f1f
commit
c11d69d8c8
14
mm/memory.c
14
mm/memory.c
|
@ -2819,19 +2819,9 @@ int make_pages_present(unsigned long addr, unsigned long end)
|
|||
len = DIV_ROUND_UP(end, PAGE_SIZE) - addr/PAGE_SIZE;
|
||||
ret = get_user_pages(current, current->mm, addr,
|
||||
len, write, 0, NULL, NULL);
|
||||
if (ret < 0) {
|
||||
/*
|
||||
SUS require strange return value to mlock
|
||||
- invalid addr generate to ENOMEM.
|
||||
- out of memory should generate EAGAIN.
|
||||
*/
|
||||
if (ret == -EFAULT)
|
||||
ret = -ENOMEM;
|
||||
else if (ret == -ENOMEM)
|
||||
ret = -EAGAIN;
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
return ret == len ? 0 : -ENOMEM;
|
||||
return ret == len ? 0 : -1;
|
||||
}
|
||||
|
||||
#if !defined(__HAVE_ARCH_GATE_AREA)
|
||||
|
|
Loading…
Reference in New Issue