diff options
author | Mark Johnston <markj@FreeBSD.org> | 2020-02-13 23:18:35 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2020-02-13 23:18:35 +0000 |
commit | 06ef60525f8ebcc171e5eb4d369200f5491f66a8 (patch) | |
tree | 647d4e9eff1def351dba4b8ed6b63ef2fb72fc67 /sys/vm/vm_page.c | |
parent | cefc92e1a2beaa7077e4b363e034797505f6c4cd (diff) | |
download | src-06ef60525f8ebcc171e5eb4d369200f5491f66a8.tar.gz src-06ef60525f8ebcc171e5eb4d369200f5491f66a8.zip |
Fix handling of WAITFAIL in vm_page_grab() and vm_page_grab_pages().
After sleeping through a memory shortage, we must return NULL rather
than retry.
Discussed with: jeff
Reported by: pho
Sponsored by: The FreeBSD Foundation
Notes
Notes:
svn path=/head/; revision=357893
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r-- | sys/vm/vm_page.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 574c28384c61..087604d534ae 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -4258,7 +4258,7 @@ retrylookup: return (NULL); m = vm_page_alloc(object, pindex, pflags); if (m == NULL) { - if ((allocflags & VM_ALLOC_NOWAIT) != 0) + if ((allocflags & (VM_ALLOC_NOWAIT | VM_ALLOC_WAITFAIL)) != 0) return (NULL); goto retrylookup; } @@ -4466,7 +4466,8 @@ retrylookup: m = vm_page_alloc_after(object, pindex + i, pflags | VM_ALLOC_COUNT(count - i), mpred); if (m == NULL) { - if ((allocflags & VM_ALLOC_NOWAIT) != 0) + if ((allocflags & (VM_ALLOC_NOWAIT | + VM_ALLOC_WAITFAIL)) != 0) break; goto retrylookup; } |