From: Yu Watanabe Date: Wed, 30 Mar 2022 17:04:44 +0000 (+0900) Subject: udev: do not use sd_event_source_disable_unref() at more places X-Git-Tag: v251-rc2~246 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=72151060e80df06b66f182489deaea3ed828848f;p=thirdparty%2Fsystemd.git udev: do not use sd_event_source_disable_unref() at more places Fixes a bug introduced by 9612da361a825d70a9fd392f3ee5a53bf8896887. Follow-up for f777e745a7966ea52ef29f9e4edfdd16874cfe86. --- 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;