From 356d44a063a425704bd9c35c01c53ff57e512995 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 7 May 2025 00:59:56 +0900 Subject: [PATCH] udev-worker: allocate UdevEvent object just before use No functional change, just refactoring. --- src/udev/udev-worker.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/udev/udev-worker.c b/src/udev/udev-worker.c index f6b86e5e4f5..56d9f639001 100644 --- a/src/udev/udev-worker.c +++ b/src/udev/udev-worker.c @@ -173,8 +173,6 @@ static int worker_mark_block_device_read_only(sd_device *dev) { } static int worker_process_device(UdevWorker *worker, sd_device *dev) { - _cleanup_(udev_event_unrefp) UdevEvent *udev_event = NULL; - _cleanup_close_ int fd_lock = -EBADF; int r; assert(worker); @@ -182,16 +180,12 @@ static int worker_process_device(UdevWorker *worker, sd_device *dev) { log_device_uevent(dev, "Processing device"); - udev_event = udev_event_new(dev, worker, EVENT_UDEV_WORKER); - if (!udev_event) - return -ENOMEM; - udev_event->trace = worker->config.trace; - /* If this is a block device and the device is locked currently via the BSD advisory locks, * someone else is using it exclusively. We don't run our udev rules now to not interfere. * Instead of processing the event, we requeue the event and will try again after a delay. * * The user-facing side of this: https://systemd.io/BLOCK_DEVICE_LOCKING */ + _cleanup_close_ int fd_lock = -EBADF; r = worker_lock_whole_disk(dev, &fd_lock); if (r == -EAGAIN) { log_device_debug(dev, "Block device is currently locked, requeuing the event."); @@ -215,6 +209,11 @@ static int worker_process_device(UdevWorker *worker, sd_device *dev) { if (r < 0) log_device_warning_errno(dev, r, "Failed to remove inotify watch, ignoring: %m"); + _cleanup_(udev_event_unrefp) UdevEvent *udev_event = udev_event_new(dev, worker, EVENT_UDEV_WORKER); + if (!udev_event) + return -ENOMEM; + udev_event->trace = worker->config.trace; + /* apply rules, create node, symlinks */ r = udev_event_execute_rules(udev_event, worker->rules); if (r < 0) -- 2.47.3