From 6177b760d746a23f5f3a95482e35e0e65df0c974 Mon Sep 17 00:00:00 2001
From: Kurt Roeckx <kurt@roeckx.be>
Date: Sat, 28 Sep 2019 14:59:32 +0200
Subject: [PATCH 1/2] Add defines for __NR_getrandom for all Linux
 architectures

Fixes: #10015
---
 crypto/rand/rand_unix.c | 44 +++++++++++++++++++++++++++++++++++++++--
 1 file changed, 42 insertions(+), 2 deletions(-)

diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c
index 8641badbff8..7585f28b243 100644
--- a/crypto/rand/rand_unix.c
+++ b/crypto/rand/rand_unix.c
@@ -261,12 +261,52 @@ static ssize_t sysctl_random(char *buf, size_t buflen)
 #  if defined(OPENSSL_RAND_SEED_GETRANDOM)
 
 #   if defined(__linux) && !defined(__NR_getrandom)
-#    if defined(__arm__) && defined(__NR_SYSCALL_BASE)
+#    if defined(__arm__)
 #     define __NR_getrandom    (__NR_SYSCALL_BASE+384)
 #    elif defined(__i386__)
 #     define __NR_getrandom    355
-#    elif defined(__x86_64__) && !defined(__ILP32__)
+#    elif defined(__x86_64__)
 #     define __NR_getrandom    318
+#    elif defined(__xtensa__)
+#     define __NR_getrandom    338
+#    elif defined(__s390__) || defined(__s390x__)
+#     define __NR_getrandom    349
+#    elif defined(__bfin__)
+#     define __NR_getrandom    389
+#    elif defined(__powerpc__)
+#     define __NR_getrandom    359
+#    elif defined(__mips__) || defined(__mips64)
+#     if _MIPS_SIM == _MIPS_SIM_ABI32
+#      define __NR_getrandom   (__NR_Linux + 353)
+#     elif _MIPS_SIM == _MIPS_SIM_ABI64
+#      define __NR_getrandom   (__NR_Linux + 313)
+#     elif _MIPS_SIM == _MIPS_SIM_NABI32
+#      define __NR_getrandom   (__NR_Linux + 317)
+#     endif
+#    elif defined(__hppa__)
+#     define __NR_getrandom    (__NR_Linux + 339)
+#    elif defined(__sparc__)
+#     define __NR_getrandom    347
+#    elif defined(__ia64__)
+#     define __NR_getrandom    1339
+#    elif defined(__alpha__)
+#     define __NR_getrandom    511
+#    elif defined(__sh__)
+#     if defined(__ILP32__)
+#      define __NR_getrandom   373
+#     else
+#      define __NR_getrandom   384
+#     endif
+#    elif defined(__avr32__)
+#     define __NR_getrandom    317
+#    elif defined(__microblaze__)
+#     define __NR_getrandom    385
+#    elif defined(__m68k__)
+#     define __NR_getrandom    352
+#    elif defined(__cris__)
+#     define __NR_getrandom    356
+#    else /* generic, includes __aarch64__ */
+#     define __NR_getrandom    278
 #    endif
 #   endif
 

From b564574310e704c179042c3a07a6853b1e6aea64 Mon Sep 17 00:00:00 2001
From: Kurt Roeckx <kurt@roeckx.be>
Date: Sun, 29 Sep 2019 17:45:30 +0200
Subject: [PATCH 2/2] fixup! Add defines for __NR_getrandom for all Linux
 architectures

---
 crypto/rand/rand_unix.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c
index 7585f28b243..d11a77f4e0f 100644
--- a/crypto/rand/rand_unix.c
+++ b/crypto/rand/rand_unix.c
@@ -266,7 +266,11 @@ static ssize_t sysctl_random(char *buf, size_t buflen)
 #    elif defined(__i386__)
 #     define __NR_getrandom    355
 #    elif defined(__x86_64__)
-#     define __NR_getrandom    318
+#     if defined(__ILP32__)
+#      define __NR_getrandom   (__X32_SYSCALL_BIT + 318)
+#     else
+#      define __NR_getrandom   318
+#     endif
 #    elif defined(__xtensa__)
 #     define __NR_getrandom    338
 #    elif defined(__s390__) || defined(__s390x__)
@@ -292,7 +296,7 @@ static ssize_t sysctl_random(char *buf, size_t buflen)
 #    elif defined(__alpha__)
 #     define __NR_getrandom    511
 #    elif defined(__sh__)
-#     if defined(__ILP32__)
+#     if defined(__SH5__)
 #      define __NR_getrandom   373
 #     else
 #      define __NR_getrandom   384
@@ -305,7 +309,9 @@ static ssize_t sysctl_random(char *buf, size_t buflen)
 #     define __NR_getrandom    352
 #    elif defined(__cris__)
 #     define __NR_getrandom    356
-#    else /* generic, includes __aarch64__ */
+#    elif defined(__aarch64__)
+#     define __NR_getrandom    278
+#    else /* generic */
 #     define __NR_getrandom    278
 #    endif
 #   endif
