From cdc2af3e150bb9d7ecacbeca590ff8b3302aa2b8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 16 Oct 2018 13:47:23 +0200 Subject: [PATCH 1/3] core: log about unit_watch_pid() failing CID 1237509 --- src/core/service.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/service.c b/src/core/service.c index 3d065bf487..fa2c6996ad 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -3648,7 +3648,11 @@ static void service_notify_message( } if (r > 0) { service_set_main_pid(s, new_main_pid); - unit_watch_pid(UNIT(s), new_main_pid); + + r = unit_watch_pid(UNIT(s), new_main_pid); + if (r < 0) + log_unit_warning_errno(UNIT(s), r, "Failed to watch new main PID "PID_FMT" for service: %m", new_main_pid); + notify_dbus = true; } } From eb276e98419af59d4a587f2dd37e0b923e4c6fd2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 16 Oct 2018 13:48:25 +0200 Subject: [PATCH 2/3] udev: don't use devname before we acquired it CID 1396107 --- src/udev/udev-watch.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/udev/udev-watch.c b/src/udev/udev-watch.c index cfcb310d23..04182b2e15 100644 --- a/src/udev/udev-watch.c +++ b/src/udev/udev-watch.c @@ -127,16 +127,16 @@ int udev_watch_end(sd_device *dev) { if (inotify_fd < 0) return log_error_errno(EINVAL, "Invalid inotify descriptor."); + r = sd_device_get_devname(dev, &devnode); + if (r < 0) + return log_error_errno(r, "Failed to get device name: %m"); + r = device_get_watch_handle(dev, &wd); if (r == -ENOENT) return 0; if (r < 0) return log_error_errno(r, "Failed to get watch handle for device '%s', ignoring: %m", devnode); - r = sd_device_get_devname(dev, &devnode); - if (r < 0) - return log_error_errno(r, "Failed to get device name: %m"); - log_debug("Removing watch on '%s'", devnode); (void) inotify_rm_watch(inotify_fd, wd); From cb542e8488dce2d1bc3a659e994580f1e0765f11 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 16 Oct 2018 13:49:28 +0200 Subject: [PATCH 3/3] udev: (void)ify calls to kill() where we knowingly ignore the return values CID 1368231 CID 1368229 --- src/udev/udevd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/udev/udevd.c b/src/udev/udevd.c index ea1476e7dd..4f77243c15 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -555,7 +555,7 @@ static void event_run(Manager *manager, struct event *event) { if (count < 0) { log_error_errno(errno, "worker ["PID_FMT"] did not accept message %zi (%m), kill it", worker->pid, count); - kill(worker->pid, SIGKILL); + (void) kill(worker->pid, SIGKILL); worker->state = WORKER_KILLED; continue; } @@ -629,7 +629,7 @@ static void manager_kill_workers(Manager *manager) { continue; worker->state = WORKER_KILLED; - kill(worker->pid, SIGTERM); + (void) kill(worker->pid, SIGTERM); } }