Commit 7f591fa7 authored by Hsin-Yi Wang's avatar Hsin-Yi Wang Committed by Will Deacon

arm64: kexec_file: add rng-seed support

Adding "rng-seed" to dtb. It's fine to add this property if original
fdt doesn't contain it. Since original seed will be wiped after
read, so use a default size 128 bytes here.
Signed-off-by: default avatarHsin-Yi Wang <hsinyi@chromium.org>
Reviewed-by: default avatarStephen Boyd <swboyd@chromium.org>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent 428826f5
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
#define FDT_PROP_INITRD_END "linux,initrd-end" #define FDT_PROP_INITRD_END "linux,initrd-end"
#define FDT_PROP_BOOTARGS "bootargs" #define FDT_PROP_BOOTARGS "bootargs"
#define FDT_PROP_KASLR_SEED "kaslr-seed" #define FDT_PROP_KASLR_SEED "kaslr-seed"
#define FDT_PROP_RNG_SEED "rng-seed"
#define RNG_SEED_SIZE 128
const struct kexec_file_ops * const kexec_file_loaders[] = { const struct kexec_file_ops * const kexec_file_loaders[] = {
&kexec_image_ops, &kexec_image_ops,
...@@ -102,6 +104,19 @@ static int setup_dtb(struct kimage *image, ...@@ -102,6 +104,19 @@ static int setup_dtb(struct kimage *image,
FDT_PROP_KASLR_SEED); FDT_PROP_KASLR_SEED);
} }
/* add rng-seed */
if (rng_is_initialized()) {
u8 rng_seed[RNG_SEED_SIZE];
get_random_bytes(rng_seed, RNG_SEED_SIZE);
ret = fdt_setprop(dtb, off, FDT_PROP_RNG_SEED, rng_seed,
RNG_SEED_SIZE);
if (ret)
goto out;
} else {
pr_notice("RNG is not initialised: omitting \"%s\" property\n",
FDT_PROP_RNG_SEED);
}
out: out:
if (ret) if (ret)
return (ret == -FDT_ERR_NOSPACE) ? -ENOMEM : -EINVAL; return (ret == -FDT_ERR_NOSPACE) ? -ENOMEM : -EINVAL;
...@@ -110,7 +125,8 @@ static int setup_dtb(struct kimage *image, ...@@ -110,7 +125,8 @@ static int setup_dtb(struct kimage *image,
} }
/* /*
* More space needed so that we can add initrd, bootargs and kaslr-seed. * More space needed so that we can add initrd, bootargs, kaslr-seed, and
* rng-seed.
*/ */
#define DTB_EXTRA_SPACE 0x1000 #define DTB_EXTRA_SPACE 0x1000
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment