From a99fc685214452aedabf9ac105bb99357006aa26 Mon Sep 17 00:00:00 2001
|
From: Andrea Adami <andrea.adami@gmail.com>
|
Date: Wed, 5 Sep 2018 17:07:48 +0200
|
Subject: [PATCH] kexec-arm64.c: workaround for getrandom() syscall
|
|
The syscall was added to OE's klibc.
|
Fix
|
|
| ../git/kexec/arch/arm64/kexec-arm64.c:19:10: fatal error: syscall.h: No such file or directory
|
| #include <syscall.h>
|
|
and
|
|
| ../git/kexec/arch/arm64/kexec-arm64.c: In function 'setup_2nd_dtb':
|
| ../git/kexec/arch/arm64/kexec-arm64.c:499:12: warning: implicit declaration of function 'getrandom'; did you mean 'srandom'? [-Wimplicit-function-declaration]
|
| result = getrandom(&fdt_val64,
|
|
Upstream-Status: Inappropriate [klibc specific]
|
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
|
|
---
|
kexec/arch/arm64/kexec-arm64.c | 12 +++++++++++-
|
1 file changed, 11 insertions(+), 1 deletion(-)
|
|
diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c
|
index b143e86..88d4168 100644
|
--- a/kexec/arch/arm64/kexec-arm64.c
|
+++ b/kexec/arch/arm64/kexec-arm64.c
|
@@ -16,7 +16,11 @@
|
#include <elf.h>
|
|
#include <unistd.h>
|
+
|
+#ifndef __KLIBC__
|
#include <syscall.h>
|
+#endif
|
+
|
#include <errno.h>
|
#include <linux/random.h>
|
|
@@ -487,10 +491,16 @@ static int setup_2nd_dtb(struct dtb *dtb, char *command_line, int on_crash)
|
* have a valid random seed to pass to the
|
* secondary kernel.
|
*/
|
+#ifndef __KLIBC__
|
result = syscall(SYS_getrandom, &fdt_val64,
|
sizeof(fdt_val64),
|
GRND_NONBLOCK);
|
-
|
+#else
|
+ extern ssize_t getrandom(void *, size_t, unsigned int);
|
+ result = getrandom(&fdt_val64,
|
+ sizeof(fdt_val64),
|
+ GRND_NONBLOCK);
|
+#endif
|
if(result == -1) {
|
fprintf(stderr, "%s: Reading random bytes failed.\n",
|
__func__);
|