From 72151060e80df06b66f182489deaea3ed828848f Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 31 Mar 2022 02:04:44 +0900 Subject: [PATCH] udev: do not use sd_event_source_disable_unref() at more places Fixes a bug introduced by 9612da361a825d70a9fd392f3ee5a53bf8896887. Follow-up for f777e745a7966ea52ef29f9e4edfdd16874cfe86. --- src/udev/udev-ctrl.c | 4 ++-- src/udev/udevd.c | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c index 4913d0262b5..528641d9563 100644 --- a/src/udev/udev-ctrl.c +++ b/src/udev/udev-ctrl.c @@ -101,7 +101,7 @@ static void udev_ctrl_disconnect(UdevCtrl *uctrl) { if (!uctrl) return; - uctrl->event_source_connect = sd_event_source_disable_unref(uctrl->event_source_connect); + uctrl->event_source_connect = sd_event_source_unref(uctrl->event_source_connect); uctrl->sock_connect = safe_close(uctrl->sock_connect); } @@ -110,7 +110,7 @@ static UdevCtrl *udev_ctrl_free(UdevCtrl *uctrl) { udev_ctrl_disconnect(uctrl); - sd_event_source_disable_unref(uctrl->event_source); + sd_event_source_unref(uctrl->event_source); safe_close(uctrl->sock); sd_event_unref(uctrl->event); diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 0a888993c86..1cde6b9c9c0 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -178,8 +178,10 @@ static Event *event_free(Event *event) { LIST_REMOVE(event, event->manager->events, event); sd_device_unref(event->dev); - sd_event_source_disable_unref(event->timeout_warning_event); - sd_event_source_disable_unref(event->timeout_event); + /* Do not use sd_event_source_disable_unref() here, as this is called by both workers and the + * main process. */ + sd_event_source_unref(event->timeout_warning_event); + sd_event_source_unref(event->timeout_event); if (event->worker) event->worker->event = NULL; -- 2.47.3