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

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
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@
#define FDT_PROP_INITRD_END	"linux,initrd-end"
#define FDT_PROP_BOOTARGS	"bootargs"
#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[] = {
	&kexec_image_ops,
@@ -102,6 +104,19 @@ static int setup_dtb(struct kimage *image,
				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:
	if (ret)
		return (ret == -FDT_ERR_NOSPACE) ? -ENOMEM : -EINVAL;
@@ -110,7 +125,8 @@ out:
}

/*
 * 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