cryptenroll,cryptsetup,shutdown: only call mlockall if we have CAP_IPC_LOCK

Calling mlockall in an unprivileged process most notably had the effect
of making systemd-cryptenroll OOM while trying to open a normal-sized
argon2 keyslot due to it hitting RLIMIT_MEMLOCK.
This commit is contained in:
cyclopentane
2026-01-18 19:15:30 +01:00
committed by Mike Yuan
parent 6b3c289406
commit 465f6a6284
5 changed files with 31 additions and 5 deletions
+2 -1
View File
@@ -40,6 +40,7 @@
#include "path-util.h"
#include "pkcs11-util.h"
#include "pretty-print.h"
#include "process-util.h"
#include "random-util.h"
#include "string-table.h"
#include "string-util.h"
@@ -2582,7 +2583,7 @@ static int verb_attach(int argc, char *argv[], void *userdata) {
volume, source, strempty(arg_type), strempty(arg_cipher));
/* A delicious drop of snake oil */
(void) mlockall(MCL_CURRENT|MCL_FUTURE|MCL_ONFAULT);
(void) safe_mlockall(MCL_CURRENT|MCL_FUTURE|MCL_ONFAULT);
if (key_file && arg_keyfile_erase)
destroy_key_file = key_file; /* let's get this baby erased when we leave */