X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibudev%2Flibudev-monitor.c;h=ea7263f2808a6721b542a099a6dd83e907bd73ff;hb=96415cad2fdd8d280ae94b02651b5f826a2f7f3d;hp=4586b3d4c7bb7528d1da6427c21e22a9bf3c826e;hpb=df32a1caafe881fc7850a9b569179b877198685f;p=elogind.git diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c index 4586b3d4c..ea7263f28 100644 --- a/src/libudev/libudev-monitor.c +++ b/src/libudev/libudev-monitor.c @@ -115,7 +115,7 @@ static bool udev_has_devtmpfs(struct udev *udev) { int r; h = alloca(MAX_HANDLE_SZ); - + h->handle_bytes = MAX_HANDLE_SZ; r = name_to_handle_at(AT_FDCWD, "/dev", h, &mount_id, 0); if (r < 0) return false; @@ -126,7 +126,6 @@ static bool udev_has_devtmpfs(struct udev *udev) { return false; FOREACH_LINE(line, f, return false) { - _cleanup_free_ char *opts = NULL; int mid; if (sscanf(line, "%i", &mid) != 1) @@ -172,27 +171,29 @@ struct udev_monitor *udev_monitor_new_from_netlink_fd(struct udev *udev, const c if (name == NULL) group = UDEV_MONITOR_NONE; - else if (streq(name, "udev")) - group = UDEV_MONITOR_UDEV; - else if (streq(name, "kernel")) + else if (streq(name, "udev")) { + /* + * We do not support subscribing to uevents if no instance of + * udev is running. Uevents would otherwise broadcast the + * processing data of the host into containers, which is not + * desired. + * + * Containers will currently not get any udev uevents, until + * a supporting infrastructure is available. + * + * We do not set a netlink multicast group here, so the socket + * will not receive any messages. + */ + if (!udev_has_service(udev) && !udev_has_devtmpfs(udev)) { + udev_dbg(udev, "the udev service seems not to be active, disable the monitor\n"); + group = UDEV_MONITOR_NONE; + } else + group = UDEV_MONITOR_UDEV; + } else if (streq(name, "kernel")) group = UDEV_MONITOR_KERNEL; else return NULL; - /* - * We do not support subscribing to uevents if no instance of udev - * is running. Uevents would otherwise broadcast the processing data - * of the host into containers, which is not acceptable. Containers - * will currently just not get any uevents. - * - * We clear the netlink multicast group here, so the socket will - * not receive any messages. - */ - if (!udev_has_service(udev) && !udev_has_devtmpfs(udev)) { - udev_dbg(udev, "udev seems not to be active, disable the monitor\n"); - group = 0; - } - udev_monitor = udev_monitor_new(udev); if (udev_monitor == NULL) return NULL;