udev: introduce event_freep() and use it as cleanup attribute

No functional change, just refactoring and preparation for later change.
This commit is contained in:
Yu Watanabe
2025-05-10 00:26:32 +09:00
parent 180ea8b3ab
commit e962ebbe72
+10 -8
View File
@@ -94,21 +94,23 @@ static Event* event_free(Event *event) {
if (!event)
return NULL;
assert(event->manager);
if (event->manager)
LIST_REMOVE(event, event->manager->events, event);
if (event->worker)
event->worker->event = NULL;
LIST_REMOVE(event, event->manager->events, event);
sd_device_unref(event->dev);
sd_event_source_unref(event->retry_event_source);
sd_event_source_unref(event->timeout_warning_event);
sd_event_source_unref(event->timeout_event);
if (event->worker)
event->worker->event = NULL;
return mfree(event);
}
DEFINE_TRIVIAL_CLEANUP_FUNC(Event*, event_free);
static Worker* worker_free(Worker *worker) {
if (!worker)
return NULL;
@@ -828,7 +830,6 @@ static int event_queue_insert(Manager *manager, sd_device *dev) {
const char *devpath, *devpath_old = NULL, *id = NULL, *devnode = NULL;
sd_device_action_t action;
uint64_t seqnum;
Event *event;
int r;
assert(manager);
@@ -859,12 +860,11 @@ static int event_queue_insert(Manager *manager, sd_device *dev) {
if (r < 0 && r != -ENOENT)
return r;
event = new(Event, 1);
_cleanup_(event_freep) Event *event = new(Event, 1);
if (!event)
return -ENOMEM;
*event = (Event) {
.manager = manager,
.dev = sd_device_ref(dev),
.seqnum = seqnum,
.action = action,
@@ -876,6 +876,8 @@ static int event_queue_insert(Manager *manager, sd_device *dev) {
};
LIST_APPEND(event, manager->events, event);
event->manager = manager;
TAKE_PTR(event);
log_device_uevent(dev, "Device is queued");
if (!manager->queue_file_created) {