If ioctl(,WDOGIOC_SMODE,) fails, kill the child process before
killing self, instead of the other way around. Fixes a bug where the child process would use 100% CPU spinning while it waited for its parent to arm a non-existent watchdog timer. Now, the child process gets killed, as was intended.
This commit is contained in:
parent
1c952b1b24
commit
fab0410101
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: wdogctl.c,v 1.14 2005/08/31 18:21:39 dyoung Exp $ */
|
/* $NetBSD: wdogctl.c,v 1.15 2005/08/31 18:28:58 dyoung Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2000 Zembu Labs, Inc.
|
* Copyright (c) 2000 Zembu Labs, Inc.
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
__RCSID("$NetBSD: wdogctl.c,v 1.14 2005/08/31 18:21:39 dyoung Exp $");
|
__RCSID("$NetBSD: wdogctl.c,v 1.15 2005/08/31 18:28:58 dyoung Exp $");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -244,8 +244,8 @@ enable_user(const char *name, u_int period)
|
||||||
err(EXIT_FAILURE, "unable to fork tickler process");
|
err(EXIT_FAILURE, "unable to fork tickler process");
|
||||||
else if (tickler != 0) {
|
else if (tickler != 0) {
|
||||||
if (ioctl(fd, WDOGIOC_SMODE, &wm) == -1) {
|
if (ioctl(fd, WDOGIOC_SMODE, &wm) == -1) {
|
||||||
err(EXIT_FAILURE, "WDOGIOC_SMODE");
|
|
||||||
(void)kill(tickler, SIGTERM);
|
(void)kill(tickler, SIGTERM);
|
||||||
|
err(EXIT_FAILURE, "WDOGIOC_SMODE");
|
||||||
}
|
}
|
||||||
(void)close(fd);
|
(void)close(fd);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue