]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev-event: make udev_event_new() take sd_netlink and take a reference of that
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 1 Nov 2018 13:19:31 +0000 (22:19 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 7 Nov 2018 04:35:03 +0000 (13:35 +0900)
src/test/test-udev.c
src/udev/udev-event.c
src/udev/udev.h
src/udev/udevadm-test.c
src/udev/udevd.c

index 60267b70c61a7118a13e3cf37a561f3e16ce8787..7d4eacb8a1fb91e9b5d150d5529fec28c2a0a346 100644 (file)
@@ -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);
 
index 17aaa428420f316af41150f9b67195fd9f808391..cca6c42363216b22f7106e03ef71108c2990fb84 100644 (file)
@@ -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;
index 246f74e6ee3f5a69eac9aa56394251dbbe9e9602..34c63a6eaca33272a62333c62c0e276ab97fc5de 100644 (file)
@@ -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,
index df669971848dac6691f2c8b94a075b29eaab0a9d..ec3d8460e8b077c61e9f657514c31fd7ff3af7cf 100644 (file)
@@ -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);
index 9985907e80dbd0cf8bfc1fd1cb3cc38ee45306d1..efab86b413a66604a3e9b51b4065bd3a2c5fdc0f 100644 (file)
@@ -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);