[PATCH] fdt: add kaslr-seed if DM_RNG is enabled
Marek Vasut
marex at denx.de
Wed May 15 20:35:38 CEST 2024
On 5/15/24 6:29 PM, Tim Harvey wrote:
> On Tue, May 14, 2024 at 5:50 PM Marek Vasut <marex at denx.de> wrote:
>>
>> On 5/15/24 2:22 AM, Tim Harvey wrote:
>>> If RANDOMIZE_BASE is enabled in the Linux kernel instructing it to
>>> randomize the virtual address at which the kernel image is loaded, it
>>> expects entropy to be provided by the bootloader by populating
>>> /chosen/kaslr-seed with a 64-bit value from source of entropy at boot.
>>
>> Thanks for working on this one, this is really nice.
>>
>>> If we have DM_RNG enabled poulate this value automatically when
>>> fdt_chosen is called.
>
> Hi Marek,
>
> Just noticed a typo in the commit log - I'll s/poulate/populate/ in v2
>
>>>
>>> Signed-off-by: Tim Harvey <tharvey at gateworks.com>
>>> ---
>>> boot/fdt_support.c | 23 +++++++++++++++++++++++
>>> 1 file changed, 23 insertions(+)
>>>
>>> diff --git a/boot/fdt_support.c b/boot/fdt_support.c
>>> index 874ca4d6f5af..cd3069baf450 100644
>>> --- a/boot/fdt_support.c
>>> +++ b/boot/fdt_support.c
>>> @@ -7,10 +7,12 @@
>>> */
>>>
>>> #include <abuf.h>
>>> +#include <dm.h>
>>> #include <env.h>
>>> #include <log.h>
>>> #include <mapmem.h>
>>> #include <net.h>
>>> +#include <rng.h>
>>> #include <stdio_dev.h>
>>> #include <dm/ofnode.h>
>>> #include <linux/ctype.h>
>>> @@ -300,6 +302,27 @@ int fdt_chosen(void *fdt)
>>> if (nodeoffset < 0)
>>> return nodeoffset;
>>>
>>> + if (IS_ENABLED(CONFIG_DM_RNG)) {
>>> + struct udevice *dev;
>>> + size_t len = 0x8;
>>> + u64 *data;
>>> +
>>> + data = malloc(len);
>>
>> Can you allocate this 8 byte array on stack , i.e. u64 data[2]; ?
>>
>
> Sure... that makes sense - u64 data (just 1 64bit value)
Oh, right. Thanks for fixing it all up and keeping an eye on all the bugs !
More information about the U-Boot
mailing list