This algorithm can use a lot of memory, so add a check for this condition and return the correct error. Signed-off-by: Simon Glass <simon.glass@canonical.com> --- drivers/block/luks2.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/block/luks2.c b/drivers/block/luks2.c index e3f3ac28c34..db5f13badd9 100644 --- a/drivers/block/luks2.c +++ b/drivers/block/luks2.c @@ -676,7 +676,10 @@ static int try_keyslot_argon2(struct udevice *blk, struct disk_partition *pinfo, ks->kdf.salt_len, derived_key, ks->area.key_size); if (ret) { - log_err("Argon2id failed: %s\n", argon2_error_message(ret)); + log_err("Argon2id failed: %s (code=%d)\n", + argon2_error_message(ret), ret); + if (ret == ARGON2_MEMORY_ALLOCATION_ERROR) + return -ENOMEM; return -EPROTO; } log_debug("LUKS2 Argon2: key derivation succeeded\n"); -- 2.43.0