X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev%2Fudevd.c;h=d9de26ea6cc705e8912bebc897ae3451f8d021fc;hp=291655ef000132c677138109140d729892045343;hb=116254097ad3c07d9f7ed06042dbec7ba4f0f4fd;hpb=241e5a21f9ad7bc986e1bb74093adf9fdb98b170;ds=sidebyside diff --git a/udev/udevd.c b/udev/udevd.c index 291655ef0..d9de26ea6 100644 --- a/udev/udevd.c +++ b/udev/udevd.c @@ -195,7 +195,6 @@ static void event_fork(struct udev_event *event) switch (pid) { case 0: /* child */ - udev_monitor_unref(kernel_monitor); udev_ctrl_unref(udev_ctrl); logging_close(); logging_init("udevd-event"); @@ -235,6 +234,9 @@ static void event_fork(struct udev_event *event) udev_device_update_db(event->dev); } + /* send processed event back to the kernel netlink socket */ + udev_monitor_send_device(kernel_monitor, event->dev); + info(event->udev, "seq %llu exit with %i\n", udev_device_get_seqnum(event->dev), err); logging_close(); if (err != 0) @@ -811,7 +813,7 @@ int main(int argc, char *argv[]) goto exit; } - kernel_monitor = udev_monitor_new_from_netlink(udev); + kernel_monitor = udev_monitor_new_from_netlink(udev, UDEV_MONITOR_KERNEL); if (kernel_monitor == NULL || udev_monitor_enable_receiving(kernel_monitor) < 0) { fprintf(stderr, "error initializing netlink socket\n"); err(udev, "error initializing netlink socket\n");