31 lines
715 B
C
31 lines
715 B
C
// SPDX-License-Identifier: GPL-2.0-only
|
|
#include <linux/types.h>
|
|
#include <linux/init.h>
|
|
#include <linux/libfdt.h>
|
|
|
|
/*
|
|
* Declare the functions that are exported (but prefixed) here so that LLVM
|
|
* does not complain it lacks the 'static' keyword (which, if added, makes
|
|
* LLVM complain because the function is actually unused in this file).
|
|
*/
|
|
u64 get_kaslr_seed(uintptr_t dtb_pa);
|
|
|
|
u64 get_kaslr_seed(uintptr_t dtb_pa)
|
|
{
|
|
int node, len;
|
|
fdt64_t *prop;
|
|
u64 ret;
|
|
|
|
node = fdt_path_offset((void *)dtb_pa, "/chosen");
|
|
if (node < 0)
|
|
return 0;
|
|
|
|
prop = fdt_getprop_w((void *)dtb_pa, node, "kaslr-seed", &len);
|
|
if (!prop || len != sizeof(u64))
|
|
return 0;
|
|
|
|
ret = fdt64_to_cpu(*prop);
|
|
*prop = 0;
|
|
return ret;
|
|
}
|