[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/8] device-tree: add re-randomization helper function
From: |
Alistair Francis |
Subject: |
Re: [PATCH v2 1/8] device-tree: add re-randomization helper function |
Date: |
Wed, 12 Oct 2022 15:03:45 +1000 |
On Wed, Oct 12, 2022 at 6:57 AM Jason A. Donenfeld <Jason@zx2c4.com> wrote:
>
> When the system reboots, the rng-seed that the FDT has should be
> re-randomized, so that the new boot gets a new seed. Several
> architectures require this functionality, so export a function for
> injecting a new seed into the given FDT.
>
> Cc: Alistair Francis <alistair.francis@wdc.com>
> Cc: David Gibson <david@gibson.dropbear.id.au>
> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> include/sysemu/device_tree.h | 9 +++++++++
> softmmu/device_tree.c | 21 +++++++++++++++++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/include/sysemu/device_tree.h b/include/sysemu/device_tree.h
> index ef060a9759..d552f324b6 100644
> --- a/include/sysemu/device_tree.h
> +++ b/include/sysemu/device_tree.h
> @@ -196,6 +196,15 @@ int qemu_fdt_setprop_sized_cells_from_array(void *fdt,
> qdt_tmp); \
> })
>
> +
> +/**
> + * qemu_fdt_randomize_seeds:
> + * @fdt: device tree blob
> + *
> + * Re-randomize all "rng-seed" properties with new seeds.
> + */
> +void qemu_fdt_randomize_seeds(void *fdt);
> +
> #define FDT_PCI_RANGE_RELOCATABLE 0x80000000
> #define FDT_PCI_RANGE_PREFETCHABLE 0x40000000
> #define FDT_PCI_RANGE_ALIASED 0x20000000
> diff --git a/softmmu/device_tree.c b/softmmu/device_tree.c
> index 6ca3fad285..d986c7b7b3 100644
> --- a/softmmu/device_tree.c
> +++ b/softmmu/device_tree.c
> @@ -22,6 +22,7 @@
> #include "qemu/option.h"
> #include "qemu/bswap.h"
> #include "qemu/cutils.h"
> +#include "qemu/guest-random.h"
> #include "sysemu/device_tree.h"
> #include "hw/loader.h"
> #include "hw/boards.h"
> @@ -643,3 +644,23 @@ out:
> g_free(propcells);
> return ret;
> }
> +
> +void qemu_fdt_randomize_seeds(void *fdt)
> +{
> + int noffset, poffset, len;
> + const char *name;
> + uint8_t *data;
> +
> + for (noffset = fdt_next_node(fdt, 0, NULL);
> + noffset >= 0;
> + noffset = fdt_next_node(fdt, noffset, NULL)) {
> + for (poffset = fdt_first_property_offset(fdt, noffset);
> + poffset >= 0;
> + poffset = fdt_next_property_offset(fdt, poffset)) {
> + data = (uint8_t *)fdt_getprop_by_offset(fdt, poffset, &name,
> &len);
> + if (!data || strcmp(name, "rng-seed"))
> + continue;
> + qemu_guest_getrandom_nofail(data, len);
> + }
> + }
> +}
> --
> 2.37.3
>
>
- [PATCH v2 0/8] rerandomize RNG seeds on reboot and handle record&replay, Jason A. Donenfeld, 2022/10/11
- [PATCH v2 1/8] device-tree: add re-randomization helper function, Jason A. Donenfeld, 2022/10/11
- Re: [PATCH v2 1/8] device-tree: add re-randomization helper function,
Alistair Francis <=
- [PATCH v2 2/8] arm: re-randomize rng-seed on reboot, Jason A. Donenfeld, 2022/10/11
- [PATCH v2 3/8] riscv: re-randomize rng-seed on reboot, Jason A. Donenfeld, 2022/10/11
- [PATCH v2 5/8] rx: re-randomize rng-seed on reboot, Jason A. Donenfeld, 2022/10/11
- [PATCH v2 6/8] mips: re-randomize rng-seed on reboot, Jason A. Donenfeld, 2022/10/11
- [PATCH v2 4/8] openrisc: re-randomize rng-seed on reboot, Jason A. Donenfeld, 2022/10/11
- [PATCH v2 7/8] reset: allow registering handlers that aren't called by snapshot loading, Jason A. Donenfeld, 2022/10/11
- [PATCH v2 8/8] reset: do not re-randomize RNG seed on snapshot load, Jason A. Donenfeld, 2022/10/11
- Re: [PATCH v2 0/8] rerandomize RNG seeds on reboot and handle record&replay, Richard Henderson, 2022/10/13