Message ID | 20221011204645.1160916-4-Jason@zx2c4.com |
---|---|
State | New |
Headers | show |
Series | rerandomize RNG seeds on reboot and handle record&replay | expand |
On Wed, Oct 12, 2022 at 6:55 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. Since the FDT is in > the ROM region at this point, we add a hook right after the ROM has been > added, so that we have a pointer to that copy of the FDT. > > Cc: Palmer Dabbelt <palmer@dabbelt.com> > Cc: Alistair Francis <alistair.francis@wdc.com> > Cc: Bin Meng <bin.meng@windriver.com> > Cc: qemu-riscv@nongnu.org > Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > hw/riscv/boot.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c > index 1ae7596873..aaecf21543 100644 > --- a/hw/riscv/boot.c > +++ b/hw/riscv/boot.c > @@ -30,6 +30,7 @@ > #include "sysemu/device_tree.h" > #include "sysemu/qtest.h" > #include "sysemu/kvm.h" > +#include "sysemu/reset.h" > > #include <libfdt.h> > > @@ -241,6 +242,8 @@ uint64_t riscv_load_fdt(hwaddr dram_base, uint64_t mem_size, void *fdt) > > rom_add_blob_fixed_as("fdt", fdt, fdtsize, fdt_addr, > &address_space_memory); > + qemu_register_reset(qemu_fdt_randomize_seeds, > + rom_ptr_for_as(&address_space_memory, fdt_addr, fdtsize)); > > return fdt_addr; > } > -- > 2.37.3 > >
diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c index 1ae7596873..aaecf21543 100644 --- a/hw/riscv/boot.c +++ b/hw/riscv/boot.c @@ -30,6 +30,7 @@ #include "sysemu/device_tree.h" #include "sysemu/qtest.h" #include "sysemu/kvm.h" +#include "sysemu/reset.h" #include <libfdt.h> @@ -241,6 +242,8 @@ uint64_t riscv_load_fdt(hwaddr dram_base, uint64_t mem_size, void *fdt) rom_add_blob_fixed_as("fdt", fdt, fdtsize, fdt_addr, &address_space_memory); + qemu_register_reset(qemu_fdt_randomize_seeds, + rom_ptr_for_as(&address_space_memory, fdt_addr, fdtsize)); return fdt_addr; }
When the system reboots, the rng-seed that the FDT has should be re-randomized, so that the new boot gets a new seed. Since the FDT is in the ROM region at this point, we add a hook right after the ROM has been added, so that we have a pointer to that copy of the FDT. Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Alistair Francis <alistair.francis@wdc.com> Cc: Bin Meng <bin.meng@windriver.com> Cc: qemu-riscv@nongnu.org Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> --- hw/riscv/boot.c | 3 +++ 1 file changed, 3 insertions(+)