Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[qemu-usermode] [qemu-usermode-static] Add patch adding the getrandom…
…() syscall ; JB#44440 This is needed as the "Unsupported syscall: 384" messages break e.g. python3 tests on arm. Signed-off-by: Aapi Hämäläinen <aapi.hamalainen@jollamobile.com>
- Loading branch information
Showing
3 changed files
with
55 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
From f894efd19917321844b31e5dd7a061fdc6fb322d Mon Sep 17 00:00:00 2001 | ||
From: Laurent Vivier <laurent@vivier.eu> | ||
Date: Sun, 21 Feb 2016 10:56:23 +0100 | ||
Subject: [PATCH] linux-user: add getrandom() syscall | ||
|
||
getrandom() has been introduced in kernel 3.17 and is now used during | ||
the boot sequence of Debian unstable (stretch/sid). | ||
|
||
Signed-off-by: Laurent Vivier <laurent@vivier.eu> | ||
Signed-off-by: Riku Voipio <riku.voipio@linaro.org> | ||
--- | ||
linux-user/syscall.c | 13 +++++++++++++ | ||
1 file changed, 13 insertions(+) | ||
|
||
diff --git a/linux-user/syscall.c b/linux-user/syscall.c | ||
index 539183a788..951753143c 100644 | ||
--- a/linux-user/syscall.c | ||
+++ b/linux-user/syscall.c | ||
@@ -249,6 +249,9 @@ _syscall2(int, ioprio_get, int, which, int, who) | ||
#if defined(TARGET_NR_ioprio_set) && defined(__NR_ioprio_set) | ||
_syscall3(int, ioprio_set, int, which, int, who, int, ioprio) | ||
#endif | ||
+#if defined(TARGET_NR_getrandom) && defined(__NR_getrandom) | ||
+_syscall3(int, getrandom, void *, buf, size_t, buflen, unsigned int, flags) | ||
+#endif | ||
|
||
static bitmask_transtbl fcntl_flags_tbl[] = { | ||
{ TARGET_O_ACCMODE, TARGET_O_WRONLY, O_ACCMODE, O_WRONLY, }, | ||
@@ -7541,6 +7544,16 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, | ||
ret = get_errno(shutdown(arg1, arg2)); | ||
break; | ||
#endif | ||
+#if defined(TARGET_NR_getrandom) && defined(__NR_getrandom) | ||
+ case TARGET_NR_getrandom: | ||
+ p = lock_user(VERIFY_WRITE, arg1, arg2, 0); | ||
+ if (!p) { | ||
+ goto efault; | ||
+ } | ||
+ ret = get_errno(getrandom(p, arg2, arg3)); | ||
+ unlock_user(p, arg1, ret); | ||
+ break; | ||
+#endif | ||
#ifdef TARGET_NR_socket | ||
case TARGET_NR_socket: | ||
ret = do_socket(arg1, arg2, arg3); | ||
-- | ||
2.17.1 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters