diff options
-rw-r--r-- | sys/vm/uma_core.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c index df79668..c6924b0 100644 --- a/sys/vm/uma_core.c +++ b/sys/vm/uma_core.c @@ -66,6 +66,7 @@ #include <sys/lock.h> #include <sys/sysctl.h> #include <sys/mutex.h> +#include <sys/proc.h> #include <sys/smp.h> #include <sys/vmmeter.h> @@ -1317,6 +1318,12 @@ uma_zalloc_arg(uma_zone_t zone, void *udata, int flags) printf("Allocating one item from %s(%p)\n", zone->uz_name, zone); #endif + if (!(flags & M_NOWAIT)) { + KASSERT(curthread->td_intr_nesting_level == 0, + ("malloc(M_WAITOK) in interrupt context")); + WITNESS_SLEEP(1, NULL); + } + zalloc_restart: cpu = PCPU_GET(cpuid); CPU_LOCK(zone, cpu); |