From f564342089ab56e44bf7240d19b860f2ed003e58 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 1 Jun 2021 22:20:55 +0200 Subject: [PATCH] core: when looping over mount/swap names, continue if we find one which doesn't translate to a valid unit name (cherry picked from commit 598a6a8491abd311d36b11caf262123fbbffb2c0) Conflict:NA Reference:https://github.com/systemd/systemd-stable/commit/f564342089ab56e44bf7240d19b860f2ed003e58 --- src/core/swap.c | 3 +++ src/core/unit.c | 11 ++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/core/swap.c b/src/core/swap.c index a81b1928b8..ca09cf0e1c 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -1448,6 +1448,9 @@ int swap_process_device_new(Manager *m, sd_device *dev) { int q; q = unit_name_from_path(devlink, ".swap", &n); + if (IN_SET(q, -EINVAL, -ENAMETOOLONG)) /* If name too long or otherwise not convertible to + * unit name, we can't manage it */ + continue; if (q < 0) return q; diff --git a/src/core/unit.c b/src/core/unit.c index c212f1043d..02df6d8d19 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1275,16 +1275,17 @@ static int unit_add_mount_dependencies(Unit *u) { Unit *m; r = unit_name_from_path(prefix, ".mount", &p); + if (IN_SET(r, -EINVAL, -ENAMETOOLONG)) + continue; /* If the path cannot be converted to a mount unit name, then it's + * not managable as a unit by systemd, and hence we don't need a + * dependency on it. Let's thus silently ignore the issue. */ if (r < 0) return r; m = manager_get_unit(u->manager, p); if (!m) { - /* Make sure to load the mount unit if - * it exists. If so the dependencies - * on this unit will be added later - * during the loading of the mount - * unit. */ + /* Make sure to load the mount unit if it exists. If so the dependencies on + * this unit will be added later during the loading of the mount unit. */ (void) manager_load_unit_prepare(u->manager, p, NULL, NULL, &m); continue; } -- 2.27.0