Patrick Williams | 213cb26 | 2021-08-07 19:21:33 -0500 | [diff] [blame^] | 1 | From 52ed51fc35f8a6148c2940eb46932b02dd3b9b23 Mon Sep 17 00:00:00 2001 |
| 2 | From: Mark Wielaard <mark@klomp.org> |
| 3 | Date: Wed, 21 Jul 2021 19:53:13 +0200 |
| 4 | Subject: [PATCH] Generate a ENOSYS (sys_ni_syscall) for clone3 on all linux |
| 5 | arches |
| 6 | |
| 7 | glibc 2.34 will try to use clone3 first before falling back to |
| 8 | the clone syscall. So implement clone3 as sys_ni_syscall which |
| 9 | simply return ENOSYS without producing a warning. |
| 10 | |
| 11 | https://bugs.kde.org/show_bug.cgi?id=439590 |
| 12 | |
| 13 | Upstream-Status: Backport |
| 14 | --- |
| 15 | coregrind/m_syswrap/syswrap-amd64-linux.c | 2 ++ |
| 16 | coregrind/m_syswrap/syswrap-arm-linux.c | 2 ++ |
| 17 | coregrind/m_syswrap/syswrap-arm64-linux.c | 2 ++ |
| 18 | coregrind/m_syswrap/syswrap-mips32-linux.c | 2 ++ |
| 19 | coregrind/m_syswrap/syswrap-mips64-linux.c | 1 + |
| 20 | coregrind/m_syswrap/syswrap-nanomips-linux.c | 1 + |
| 21 | coregrind/m_syswrap/syswrap-ppc32-linux.c | 2 ++ |
| 22 | coregrind/m_syswrap/syswrap-ppc64-linux.c | 2 ++ |
| 23 | coregrind/m_syswrap/syswrap-s390x-linux.c | 2 ++ |
| 24 | coregrind/m_syswrap/syswrap-x86-linux.c | 2 ++ |
| 25 | include/vki/vki-scnums-shared-linux.h | 2 ++ |
| 26 | 11 files changed, 20 insertions(+) |
| 27 | |
| 28 | diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c |
| 29 | index 45e1f3d1bb..3b2dcb8e30 100644 |
| 30 | --- a/coregrind/m_syswrap/syswrap-amd64-linux.c |
| 31 | +++ b/coregrind/m_syswrap/syswrap-amd64-linux.c |
| 32 | @@ -874,6 +874,8 @@ static SyscallTableEntry syscall_table[] = { |
| 33 | LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 |
| 34 | LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 |
| 35 | |
| 36 | + GENX_(__NR_clone3, sys_ni_syscall), // 435 |
| 37 | + |
| 38 | LINX_(__NR_faccessat2, sys_faccessat2), // 439 |
| 39 | }; |
| 40 | |
| 41 | diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c |
| 42 | index 428cb7c6fc..7f41b07491 100644 |
| 43 | --- a/coregrind/m_syswrap/syswrap-arm-linux.c |
| 44 | +++ b/coregrind/m_syswrap/syswrap-arm-linux.c |
| 45 | @@ -1051,6 +1051,8 @@ static SyscallTableEntry syscall_main_table[] = { |
| 46 | LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 |
| 47 | LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 |
| 48 | |
| 49 | + GENX_(__NR_clone3, sys_ni_syscall), // 435 |
| 50 | + |
| 51 | LINX_(__NR_faccessat2, sys_faccessat2), // 439 |
| 52 | }; |
| 53 | |
| 54 | diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c |
| 55 | index 024ece27f5..0d717f44be 100644 |
| 56 | --- a/coregrind/m_syswrap/syswrap-arm64-linux.c |
| 57 | +++ b/coregrind/m_syswrap/syswrap-arm64-linux.c |
| 58 | @@ -830,6 +830,8 @@ static SyscallTableEntry syscall_main_table[] = { |
| 59 | LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 |
| 60 | LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 |
| 61 | |
| 62 | + GENX_(__NR_clone3, sys_ni_syscall), // 435 |
| 63 | + |
| 64 | LINX_(__NR_faccessat2, sys_faccessat2), // 439 |
| 65 | }; |
| 66 | |
| 67 | diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c |
| 68 | index 62b085ea21..b62129111b 100644 |
| 69 | --- a/coregrind/m_syswrap/syswrap-mips32-linux.c |
| 70 | +++ b/coregrind/m_syswrap/syswrap-mips32-linux.c |
| 71 | @@ -1136,6 +1136,8 @@ static SyscallTableEntry syscall_main_table[] = { |
| 72 | LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 |
| 73 | LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 |
| 74 | |
| 75 | + GENX_(__NR_clone3, sys_ni_syscall), // 435 |
| 76 | + |
| 77 | LINX_ (__NR_faccessat2, sys_faccessat2), // 439 |
| 78 | }; |
| 79 | |
| 80 | diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c |
| 81 | index b73c03da16..94f38366f0 100644 |
| 82 | --- a/coregrind/m_syswrap/syswrap-mips64-linux.c |
| 83 | +++ b/coregrind/m_syswrap/syswrap-mips64-linux.c |
| 84 | @@ -815,6 +815,7 @@ static SyscallTableEntry syscall_main_table[] = { |
| 85 | LINXY (__NR_io_uring_setup, sys_io_uring_setup), |
| 86 | LINXY (__NR_io_uring_enter, sys_io_uring_enter), |
| 87 | LINXY (__NR_io_uring_register, sys_io_uring_register), |
| 88 | + GENX_ (__NR_clone3, sys_ni_syscall), |
| 89 | LINX_ (__NR_faccessat2, sys_faccessat2), |
| 90 | }; |
| 91 | |
| 92 | diff --git a/coregrind/m_syswrap/syswrap-nanomips-linux.c b/coregrind/m_syswrap/syswrap-nanomips-linux.c |
| 93 | index 14127b181a..102c155507 100644 |
| 94 | --- a/coregrind/m_syswrap/syswrap-nanomips-linux.c |
| 95 | +++ b/coregrind/m_syswrap/syswrap-nanomips-linux.c |
| 96 | @@ -824,6 +824,7 @@ static SyscallTableEntry syscall_main_table[] = { |
| 97 | LINXY (__NR_io_uring_setup, sys_io_uring_setup), |
| 98 | LINXY (__NR_io_uring_enter, sys_io_uring_enter), |
| 99 | LINXY (__NR_io_uring_register, sys_io_uring_register), |
| 100 | + GENX_ (__NR_clone3, sys_ni_syscall), |
| 101 | LINX_ (__NR_faccessat2, sys_faccessat2), |
| 102 | }; |
| 103 | |
| 104 | diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c |
| 105 | index aad14f8ba4..1e2efc6777 100644 |
| 106 | --- a/coregrind/m_syswrap/syswrap-ppc32-linux.c |
| 107 | +++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c |
| 108 | @@ -1054,6 +1054,8 @@ static SyscallTableEntry syscall_table[] = { |
| 109 | LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 |
| 110 | LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 |
| 111 | |
| 112 | + GENX_(__NR_clone3, sys_ni_syscall), // 435 |
| 113 | + |
| 114 | LINX_(__NR_faccessat2, sys_faccessat2), // 439 |
| 115 | }; |
| 116 | |
| 117 | diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c |
| 118 | index c0e3f55491..76610e1423 100644 |
| 119 | --- a/coregrind/m_syswrap/syswrap-ppc64-linux.c |
| 120 | +++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c |
| 121 | @@ -1023,6 +1023,8 @@ static SyscallTableEntry syscall_table[] = { |
| 122 | LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 |
| 123 | LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 |
| 124 | |
| 125 | + GENX_(__NR_clone3, sys_ni_syscall), // 435 |
| 126 | + |
| 127 | LINX_(__NR_faccessat2, sys_faccessat2), // 439 |
| 128 | }; |
| 129 | |
| 130 | diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c |
| 131 | index af6c4eb210..5283c19fe4 100644 |
| 132 | --- a/coregrind/m_syswrap/syswrap-s390x-linux.c |
| 133 | +++ b/coregrind/m_syswrap/syswrap-s390x-linux.c |
| 134 | @@ -864,6 +864,8 @@ static SyscallTableEntry syscall_table[] = { |
| 135 | LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 |
| 136 | LINXY(__NR_io_uring_register, sys_io_uring_register), // 427 |
| 137 | |
| 138 | + GENX_(__NR_clone3, sys_ni_syscall), // 435 |
| 139 | + |
| 140 | LINX_(__NR_faccessat2, sys_faccessat2), // 439 |
| 141 | }; |
| 142 | |
| 143 | diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c |
| 144 | index 67d866497d..418c769750 100644 |
| 145 | --- a/coregrind/m_syswrap/syswrap-x86-linux.c |
| 146 | +++ b/coregrind/m_syswrap/syswrap-x86-linux.c |
| 147 | @@ -1645,6 +1645,8 @@ static SyscallTableEntry syscall_table[] = { |
| 148 | LINXY(__NR_io_uring_enter, sys_io_uring_enter), // 426 |
| 149 | LINXY(__NR_io_uring_register, sys_io_uring_register),// 427 |
| 150 | |
| 151 | + GENX_(__NR_clone3, sys_ni_syscall), // 435 |
| 152 | + |
| 153 | LINX_(__NR_faccessat2, sys_faccessat2), // 439 |
| 154 | }; |
| 155 | |
| 156 | diff --git a/include/vki/vki-scnums-shared-linux.h b/include/vki/vki-scnums-shared-linux.h |
| 157 | index c8bc31b4b3..6c70c9981d 100644 |
| 158 | --- a/include/vki/vki-scnums-shared-linux.h |
| 159 | +++ b/include/vki/vki-scnums-shared-linux.h |
| 160 | @@ -39,6 +39,8 @@ |
| 161 | #define __NR_fsmount 432 |
| 162 | #define __NR_fspick 433 |
| 163 | |
| 164 | +#define __NR_clone3 435 |
| 165 | + |
| 166 | #define __NR_faccessat2 439 |
| 167 | |
| 168 | #endif |
| 169 | -- |
| 170 | 2.27.0 |
| 171 | |