From: Lennart Poettering Date: Fri, 21 Nov 2025 16:09:54 +0000 (+0100) Subject: sysext: load libraries before forking off worker child X-Git-Tag: v259-rc2~34^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c64a48605803319510154ae06dbe5a94c5cfe64a;p=thirdparty%2Fsystemd.git sysext: load libraries before forking off worker child --- diff --git a/src/sysext/meson.build b/src/sysext/meson.build index 25f6b913359..daaabec777a 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 d9c89eef746..ab1f69f8c9b 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");