summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>1996-06-06 17:17:54 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>1996-06-06 17:17:54 +0000
commit7a69d9230f834f562d2c5c36c837e67eacdf5ab3 (patch)
treeb0b320ab6fa73c1ac32669f07a0083d44e524f25
parent44ffb5f593e7b603e4251aa42ad29ddec6ef6a75 (diff)
Notes
-rw-r--r--sys/kern/kern_sysctl.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c
index 625522691b5d..51c78b9a1cc2 100644
--- a/sys/kern/kern_sysctl.c
+++ b/sys/kern/kern_sysctl.c
@@ -37,7 +37,7 @@
* SUCH DAMAGE.
*
* @(#)kern_sysctl.c 8.4 (Berkeley) 4/14/94
- * $Id: kern_sysctl.c,v 1.61 1996/04/07 13:03:06 phk Exp $
+ * $Id: kern_sysctl.c,v 1.62 1996/04/13 13:28:54 phk Exp $
*/
#include <sys/param.h>
@@ -739,7 +739,7 @@ int
userland_sysctl(struct proc *p, int *name, u_int namelen, void *old, size_t *oldlenp, int inkernel, void *new, size_t newlen, int *retval)
{
int error = 0;
- struct sysctl_req req;
+ struct sysctl_req req, req2;
bzero(&req, sizeof req);
@@ -780,8 +780,12 @@ userland_sysctl(struct proc *p, int *name, u_int namelen, void *old, size_t *old
}
memlock.sl_lock = 1;
- error = sysctl_root(0, name, namelen, &req);
+ do {
+ req2 = req;
+ error = sysctl_root(0, name, namelen, &req2);
+ } while (error == EAGAIN);
+ req = req2;
if (req.lock == 2)
vsunlock(req.oldptr, req.oldlen, B_WRITE);