diff options
Diffstat (limited to 'drivers/firmware/efi/libstub/fdt.c')
-rw-r--r-- | drivers/firmware/efi/libstub/fdt.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/firmware/efi/libstub/fdt.c b/drivers/firmware/efi/libstub/fdt.c index cf7b7d46302a..6dba78aef337 100644 --- a/drivers/firmware/efi/libstub/fdt.c +++ b/drivers/firmware/efi/libstub/fdt.c | |||
@@ -147,6 +147,20 @@ efi_status_t update_fdt(efi_system_table_t *sys_table, void *orig_fdt, | |||
147 | if (status) | 147 | if (status) |
148 | goto fdt_set_fail; | 148 | goto fdt_set_fail; |
149 | 149 | ||
150 | if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) { | ||
151 | efi_status_t efi_status; | ||
152 | |||
153 | efi_status = efi_get_random_bytes(sys_table, sizeof(fdt_val64), | ||
154 | (u8 *)&fdt_val64); | ||
155 | if (efi_status == EFI_SUCCESS) { | ||
156 | status = fdt_setprop(fdt, node, "kaslr-seed", | ||
157 | &fdt_val64, sizeof(fdt_val64)); | ||
158 | if (status) | ||
159 | goto fdt_set_fail; | ||
160 | } else if (efi_status != EFI_NOT_FOUND) { | ||
161 | return efi_status; | ||
162 | } | ||
163 | } | ||
150 | return EFI_SUCCESS; | 164 | return EFI_SUCCESS; |
151 | 165 | ||
152 | fdt_set_fail: | 166 | fdt_set_fail: |