diff options
author | 2004-12-30 08:28:39 +0000 | |
---|---|---|
committer | 2004-12-30 08:28:39 +0000 | |
commit | bbd99cb42b83d484b859f9f826a30df6c2ef310c (patch) | |
tree | 4cb579f132e0a5d80cceb09496ba9b3a6c899a5d /sys/uvm/uvm_km.c | |
parent | Enable udav now it works on alpha. ok dlg@ (diff) | |
download | wireguard-openbsd-bbd99cb42b83d484b859f9f826a30df6c2ef310c.tar.xz wireguard-openbsd-bbd99cb42b83d484b859f9f826a30df6c2ef310c.zip |
Import M_CANFAIL support from NetBSD, removes a nasty panic during low-mem scenarios, instead generating an ENOMEM backfeed, ok tedu@, prodded by many
Diffstat (limited to 'sys/uvm/uvm_km.c')
-rw-r--r-- | sys/uvm/uvm_km.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/uvm/uvm_km.c b/sys/uvm/uvm_km.c index 69d36e16eae..e34f1b4161c 100644 --- a/sys/uvm/uvm_km.c +++ b/sys/uvm/uvm_km.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_km.c,v 1.44 2004/08/24 07:16:12 tedu Exp $ */ +/* $OpenBSD: uvm_km.c,v 1.45 2004/12/30 08:28:39 niklas Exp $ */ /* $NetBSD: uvm_km.c,v 1.42 2001/01/14 02:10:01 thorpej Exp $ */ /* @@ -537,10 +537,12 @@ uvm_km_kmemalloc(map, obj, size, flags) */ if (__predict_false(pg == NULL)) { - if (flags & UVM_KMF_NOWAIT) { + if ((flags & UVM_KMF_NOWAIT) || + ((flags & UVM_KMF_CANFAIL) && + uvmexp.swpgonly == uvmexp.swpages)) { /* free everything! */ uvm_unmap(map, kva, kva + size); - return(0); + return (0); } else { uvm_wait("km_getwait2"); /* sleep here */ continue; |