aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2017-10-09 12:14:13 +0100
committerWill Deacon <will.deacon@arm.com>2017-10-09 17:20:45 +0100
commit84d77496a279c6e7ae5678737cb396a7a08d6721 (patch)
treed1e56aef7123051d871b871614930c81d732922a
parent93dd1288081497146b3a7ad98e40c5b2635c3148 (diff)
downloadkvmtool-84d77496a279c6e7ae5678737cb396a7a08d6721.tar.gz
arm64: Allow random seed to be specified for KASLR
Fully fledged bootloaders should really be populating this from within the guest using virtio-rng, but having a way to specify it on the cmdline is useful for developers or users without a bootloader. Signed-off-by: Will Deacon <will.deacon@arm.com>
-rw-r--r--arm/aarch64/include/kvm/kvm-config-arch.h5
-rw-r--r--arm/fdt.c1
-rw-r--r--arm/include/arm-common/kvm-config-arch.h1
3 files changed, 6 insertions, 1 deletions
diff --git a/arm/aarch64/include/kvm/kvm-config-arch.h b/arm/aarch64/include/kvm/kvm-config-arch.h
index 5ef1f17b..04be43df 100644
--- a/arm/aarch64/include/kvm/kvm-config-arch.h
+++ b/arm/aarch64/include/kvm/kvm-config-arch.h
@@ -5,7 +5,10 @@
OPT_BOOLEAN('\0', "aarch32", &(cfg)->aarch32_guest, \
"Run AArch32 guest"), \
OPT_BOOLEAN('\0', "pmu", &(cfg)->has_pmuv3, \
- "Create PMUv3 device"),
+ "Create PMUv3 device"), \
+ OPT_U64('\0', "kaslr-seed", &(cfg)->kaslr_seed, \
+ "Specify random seed for Kernel Address Space " \
+ "Layout Randomization (KASLR)"),
#include "arm-common/kvm-config-arch.h"
diff --git a/arm/fdt.c b/arm/fdt.c
index 68bbc185..980015b4 100644
--- a/arm/fdt.c
+++ b/arm/fdt.c
@@ -142,6 +142,7 @@ static int setup_fdt(struct kvm *kvm)
_FDT(fdt_begin_node(fdt, "chosen"));
_FDT(fdt_property_cell(fdt, "linux,pci-probe-only", 1));
_FDT(fdt_property_string(fdt, "bootargs", kvm->cfg.real_cmdline));
+ _FDT(fdt_property_u64(fdt, "kaslr-seed", kvm->cfg.arch.kaslr_seed));
/* Initrd */
if (kvm->arch.initrd_size != 0) {
diff --git a/arm/include/arm-common/kvm-config-arch.h b/arm/include/arm-common/kvm-config-arch.h
index b48e7201..f18b2c88 100644
--- a/arm/include/arm-common/kvm-config-arch.h
+++ b/arm/include/arm-common/kvm-config-arch.h
@@ -9,6 +9,7 @@ struct kvm_config_arch {
bool virtio_trans_pci;
bool aarch32_guest;
bool has_pmuv3;
+ u64 kaslr_seed;
enum irqchip_type irqchip;
};