From c64a48605803319510154ae06dbe5a94c5cfe64a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 21 Nov 2025 17:09:54 +0100 Subject: [PATCH] sysext: load libraries before forking off worker child --- src/sysext/meson.build | 5 +++++ src/sysext/sysext.c | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/src/sysext/meson.build b/src/sysext/meson.build index 25f6b91335..daaabec777 100644 --- a/src/sysext/meson.build +++ b/src/sysext/meson.build @@ -6,6 +6,11 @@ executables += [ 'public' : true, 'conditions' : ['ENABLE_SYSEXT'], 'sources' : files('sysext.c'), + 'dependencies' : [ + libblkid_cflags, + libcryptsetup_cflags, + libmount_cflags, + ], }, ] diff --git a/src/sysext/sysext.c b/src/sysext/sysext.c index d9c89eef74..ab1f69f8c9 100644 --- a/src/sysext/sysext.c +++ b/src/sysext/sysext.c @@ -11,6 +11,7 @@ #include "sd-varlink.h" #include "argv-util.h" +#include "blkid-util.h" #include "blockdev-util.h" #include "build.h" #include "bus-unit-util.h" @@ -18,6 +19,7 @@ #include "capability-util.h" #include "chase.h" #include "conf-parser.h" +#include "cryptsetup-util.h" #include "devnum-util.h" #include "discover-image.h" #include "dissect-image.h" @@ -33,6 +35,7 @@ #include "image-policy.h" #include "initrd-util.h" #include "label-util.h" /* IWYU pragma: keep */ +#include "libmount-util.h" #include "log.h" #include "loop-util.h" #include "main-func.h" @@ -523,6 +526,8 @@ static int unmerge( bool need_to_reload; int r; + (void) dlopen_libmount(); + r = need_reload(image_class, hierarchies, no_reload); if (r < 0) return r; @@ -2100,6 +2105,10 @@ static int merge(ImageClass image_class, pid_t pid; int r; + (void) dlopen_cryptsetup(); + (void) dlopen_libblkid(); + (void) dlopen_libmount(); + r = safe_fork("(sd-merge)", FORK_DEATHSIG_SIGTERM|FORK_LOG|FORK_NEW_MOUNTNS, &pid); if (r < 0) return log_error_errno(r, "Failed to fork off child: %m");