Module Name: src Committed By: christos Date: Thu Nov 9 15:40:23 UTC 2017
Modified Files: src/sys/kern: subr_pool.c Log Message: Since pr_lock is now used to wait for two things now (PR_GROWING and PR_WANTED) we need to loop for the condition we wanted. To generate a diff of this commit: cvs rdiff -u -r1.211 -r1.212 src/sys/kern/subr_pool.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/subr_pool.c diff -u src/sys/kern/subr_pool.c:1.211 src/sys/kern/subr_pool.c:1.212 --- src/sys/kern/subr_pool.c:1.211 Mon Nov 6 13:41:22 2017 +++ src/sys/kern/subr_pool.c Thu Nov 9 10:40:23 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_pool.c,v 1.211 2017/11/06 18:41:22 riastradh Exp $ */ +/* $NetBSD: subr_pool.c,v 1.212 2017/11/09 15:40:23 christos Exp $ */ /*- * Copyright (c) 1997, 1999, 2000, 2002, 2007, 2008, 2010, 2014, 2015 @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.211 2017/11/06 18:41:22 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_pool.c,v 1.212 2017/11/09 15:40:23 christos Exp $"); #ifdef _KERNEL_OPT #include "opt_ddb.h" @@ -790,7 +790,9 @@ pool_get(struct pool *pp, int flags) * it be? */ pp->pr_flags |= PR_WANTED; - cv_wait(&pp->pr_cv, &pp->pr_lock); + do { + cv_wait(&pp->pr_cv, &pp->pr_lock); + } while (pp->pr_flags & PR_WANTED); goto startover; }