X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=watchdog.c;h=dc543085d05c71104aae7f73cf24fa5515980bf1;hp=e4b82f5a8fc2526b8b14954251ca3f3a4892a61d;hb=35560c7288919006a3daf57fe4dbfca82be4462f;hpb=89eec0d61e15bd3c3cd83d24a17fa5894ae984c1 diff --git a/watchdog.c b/watchdog.c index e4b82f5..dc54308 100644 --- a/watchdog.c +++ b/watchdog.c @@ -101,12 +101,14 @@ void watchdog_init(void) DEBUG(1, "Watchdog handover: fd=%s\n", env); wdt_fd = atoi(env); unsetenv("WDTFD"); + fcntl(wdt_fd, F_SETFD, fcntl(wdt_fd, F_GETFD) | FD_CLOEXEC); } else { wdt_fd = open("/dev/watchdog", O_WRONLY); + if ((getpid() != 1) && (wdt_fd >= 0)) + fcntl(wdt_fd, F_SETFD, fcntl(wdt_fd, F_GETFD) | FD_CLOEXEC); } if (wdt_fd < 0) return; - fcntl(wdt_fd, F_SETFD, fcntl(wdt_fd, F_GETFD) | FD_CLOEXEC); LOG("- watchdog -\n"); watchdog_timeout(30); watchdog_timeout_cb(&wdt_timeout);