From: Yu Watanabe Date: Thu, 1 Nov 2018 13:19:31 +0000 (+0900) Subject: udev-event: make udev_event_new() take sd_netlink and take a reference of that X-Git-Tag: v240~392^2~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e0bb2ff94b884268045f23b296fc222946eedf0d;p=thirdparty%2Fsystemd.git udev-event: make udev_event_new() take sd_netlink and take a reference of that --- diff --git a/src/test/test-udev.c b/src/test/test-udev.c index 60267b70c61..7d4eacb8a1f 100644 --- a/src/test/test-udev.c +++ b/src/test/test-udev.c @@ -82,7 +82,7 @@ int main(int argc, char *argv[]) { goto out; } - assert_se(event = udev_event_new(dev, 0)); + assert_se(event = udev_event_new(dev, 0, NULL)); assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, SIGHUP, SIGCHLD, -1) >= 0); diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index 17aaa428420..cca6c423632 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -42,7 +42,7 @@ typedef struct Spawn { size_t result_len; } Spawn; -struct udev_event *udev_event_new(struct udev_device *dev, int exec_delay) { +struct udev_event *udev_event_new(struct udev_device *dev, int exec_delay, sd_netlink *rtnl) { struct udev_event *event; assert(dev); @@ -55,6 +55,7 @@ struct udev_event *udev_event_new(struct udev_device *dev, int exec_delay) { .dev = dev, .birth_usec = now(CLOCK_MONOTONIC), .exec_delay = exec_delay, + .rtnl = sd_netlink_ref(rtnl), }; return event; diff --git a/src/udev/udev.h b/src/udev/udev.h index 246f74e6ee3..34c63a6eaca 100644 --- a/src/udev/udev.h +++ b/src/udev/udev.h @@ -60,7 +60,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event int udev_rules_apply_static_dev_perms(struct udev_rules *rules); /* udev-event.c */ -struct udev_event *udev_event_new(struct udev_device *dev, int exec_delay); +struct udev_event *udev_event_new(struct udev_device *dev, int exec_delay, sd_netlink *rtnl); struct udev_event *udev_event_free(struct udev_event *event); ssize_t udev_event_apply_format(struct udev_event *event, const char *src, char *dest, size_t size, diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c index df669971848..ec3d8460e8b 100644 --- a/src/udev/udevadm-test.c +++ b/src/udev/udevadm-test.c @@ -128,7 +128,7 @@ int test_main(int argc, char *argv[], void *userdata) { /* don't read info from the db */ udev_device_set_info_loaded(dev); - event = udev_event_new(dev, 0); + event = udev_event_new(dev, 0, NULL); sigfillset(&mask); sigprocmask(SIG_SETMASK, &mask, &sigmask_orig); diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 9985907e80d..efab86b413a 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -409,7 +409,7 @@ static void worker_spawn(Manager *manager, struct event *event) { assert(dev); log_debug("seq %llu running", udev_device_get_seqnum(dev)); - udev_event = udev_event_new(dev, arg_exec_delay); + udev_event = udev_event_new(dev, arg_exec_delay, rtnl); if (!udev_event) { r = -ENOMEM; goto out; @@ -440,9 +440,6 @@ static void worker_spawn(Manager *manager, struct event *event) { } } - /* needed for renaming netifs */ - udev_event->rtnl = rtnl; - /* apply rules, create node, symlinks */ udev_event_execute_rules(udev_event, arg_event_timeout_usec, arg_event_timeout_warn_usec, @@ -452,7 +449,7 @@ static void worker_spawn(Manager *manager, struct event *event) { udev_event_execute_run(udev_event, arg_event_timeout_usec, arg_event_timeout_warn_usec); - if (udev_event->rtnl) + if (!rtnl) /* in case rtnl was initialized */ rtnl = sd_netlink_ref(udev_event->rtnl);