summaryrefslogtreecommitdiff
path: root/SOURCES/futex2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'SOURCES/futex2.patch')
-rw-r--r--SOURCES/futex2.patch253
1 files changed, 102 insertions, 151 deletions
diff --git a/SOURCES/futex2.patch b/SOURCES/futex2.patch
index 6a1186a..59a0802 100644
--- a/SOURCES/futex2.patch
+++ b/SOURCES/futex2.patch
@@ -156,21 +156,21 @@ index 4bbc267fb36b..f75de79fa93d 100644
--- a/arch/x86/entry/syscalls/syscall_32.tbl
+++ b/arch/x86/entry/syscalls/syscall_32.tbl
@@ -451,3 +451,5 @@
- 444 i386 landlock_create_ruleset sys_landlock_create_ruleset
445 i386 landlock_add_rule sys_landlock_add_rule
446 i386 landlock_restrict_self sys_landlock_restrict_self
-+447 i386 futex_wait sys_futex_wait
-+448 i386 futex_wake sys_futex_wake
+ 447 i386 memfd_secret sys_memfd_secret
++448 i386 futex_wait sys_futex_wait
++449 i386 futex_wake sys_futex_wake
diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl
index ce18119ea0d0..63b447255df2 100644
--- a/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/arch/x86/entry/syscalls/syscall_64.tbl
@@ -368,6 +368,8 @@
- 444 common landlock_create_ruleset sys_landlock_create_ruleset
445 common landlock_add_rule sys_landlock_add_rule
446 common landlock_restrict_self sys_landlock_restrict_self
-+447 common futex_wait sys_futex_wait
-+448 common futex_wake sys_futex_wake
+ 447 common memfd_secret sys_memfd_secret
++448 common futex_wait sys_futex_wait
++449 common futex_wake sys_futex_wake
#
# Due to a historical design error, certain syscalls are numbered differently
@@ -197,8 +197,8 @@ index 6de5a7fc066b..2a62ecca2b00 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -873,8 +873,14 @@ __SYSCALL(__NR_landlock_add_rule, sys_landlock_add_rule)
- #define __NR_landlock_restrict_self 446
- __SYSCALL(__NR_landlock_restrict_self, sys_landlock_restrict_self)
+ __SYSCALL(__NR_memfd_secret, sys_memfd_secret)
+ #endif
+#define __NR_futex_wait 443
+__SYSCALL(__NR_futex_wait, sys_futex_wait)
@@ -207,8 +207,8 @@ index 6de5a7fc066b..2a62ecca2b00 100644
+__SYSCALL(__NR_futex_wake, sys_futex_wake)
+
#undef __NR_syscalls
--#define __NR_syscalls 447
-+#define __NR_syscalls 449
+-#define __NR_syscalls 448
++#define __NR_syscalls 450
/*
* 32 bit systems traditionally used different
@@ -903,8 +903,8 @@ index 6de5a7fc066b..2a62ecca2b00 100644
--- a/tools/include/uapi/asm-generic/unistd.h
+++ b/tools/include/uapi/asm-generic/unistd.h
@@ -873,8 +873,14 @@ __SYSCALL(__NR_landlock_add_rule, sys_landlock_add_rule)
- #define __NR_landlock_restrict_self 446
- __SYSCALL(__NR_landlock_restrict_self, sys_landlock_restrict_self)
+ __SYSCALL(__NR_memfd_secret, sys_memfd_secret)
+ #endif
+#define __NR_futex_wait 443
+__SYSCALL(__NR_futex_wait, sys_futex_wait)
@@ -913,8 +913,8 @@ index 6de5a7fc066b..2a62ecca2b00 100644
+__SYSCALL(__NR_futex_wake, sys_futex_wake)
+
#undef __NR_syscalls
--#define __NR_syscalls 447
-+#define __NR_syscalls 449
+-#define __NR_syscalls 448
++#define __NR_syscalls 450
/*
* 32 bit systems traditionally used different
@@ -923,11 +923,11 @@ index ce18119ea0d0..8eb17cc08a69 100644
--- a/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl
@@ -368,6 +368,8 @@
- 444 common landlock_create_ruleset sys_landlock_create_ruleset
445 common landlock_add_rule sys_landlock_add_rule
446 common landlock_restrict_self sys_landlock_restrict_self
-+447 common futex_wait sys_futex_wait
-+448 common futex_wake sys_futex_wake
+ 447 common memfd_secret sys_memfd_secret
++448 common futex_wait sys_futex_wait
++449 common futex_wake sys_futex_wake
#
# Due to a historical design error, certain syscalls are numbered differently
@@ -1421,19 +1421,19 @@ index f75de79fa93d..b991991a434a 100644
--- a/arch/x86/entry/syscalls/syscall_32.tbl
+++ b/arch/x86/entry/syscalls/syscall_32.tbl
@@ -453,3 +453,4 @@
- 446 i386 landlock_restrict_self sys_landlock_restrict_self
- 447 i386 futex_wait sys_futex_wait
- 448 i386 futex_wake sys_futex_wake
-+449 i386 futex_waitv sys_futex_waitv compat_sys_futex_waitv
+ 447 common memfd_secret sys_memfd_secret
+ 448 i386 futex_wait sys_futex_wait
+ 449 i386 futex_wake sys_futex_wake
++450 i386 futex_waitv sys_futex_waitv compat_sys_futex_waitv
diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl
index 63b447255df2..bad4aca3e9ba 100644
--- a/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/arch/x86/entry/syscalls/syscall_64.tbl
@@ -370,6 +370,7 @@
- 446 common landlock_restrict_self sys_landlock_restrict_self
- 447 common futex_wait sys_futex_wait
- 448 common futex_wake sys_futex_wake
-+449 common futex_waitv sys_futex_waitv
+ 447 common memfd_secret sys_memfd_secret
+ 448 common futex_wait sys_futex_wait
+ 449 common futex_wake sys_futex_wake
++450 common futex_waitv sys_futex_waitv
#
# Due to a historical design error, certain syscalls are numbered differently
@@ -1500,8 +1500,8 @@ index 2a62ecca2b00..1179d3f02d65 100644
+__SC_COMP(__NR_futex_waitv, sys_futex_waitv, compat_sys_futex_waitv)
+
#undef __NR_syscalls
--#define __NR_syscalls 449
-+#define __NR_syscalls 450
+-#define __NR_syscalls 450
++#define __NR_syscalls 451
/*
* 32 bit systems traditionally used different
@@ -1749,8 +1749,8 @@ index 2a62ecca2b00..1179d3f02d65 100644
+__SC_COMP(__NR_futex_waitv, sys_futex_waitv, compat_sys_futex_waitv)
+
#undef __NR_syscalls
--#define __NR_syscalls 449
-+#define __NR_syscalls 450
+-#define __NR_syscalls 450
++#define __NR_syscalls 451
/*
* 32 bit systems traditionally used different
@@ -1759,10 +1759,10 @@ index 8eb17cc08a69..faa5a3442e43 100644
--- a/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/tools/perf/arch/x86/entry/syscalls/syscall_64.tbl
@@ -370,6 +370,7 @@
- 446 common landlock_restrict_self sys_landlock_restrict_self
- 447 common futex_wait sys_futex_wait
- 448 common futex_wake sys_futex_wake
-+449 common futex_waitv sys_futex_waitv
+ 447 common memfd_secret sys_memfd_secret
+ 448 common futex_wait sys_futex_wait
+ 449 common futex_wake sys_futex_wake
++450 common futex_waitv sys_futex_waitv
#
# Due to a historical design error, certain syscalls are numbered differently
@@ -1843,19 +1843,19 @@ index b991991a434a..1c3ca8b50247 100644
--- a/arch/x86/entry/syscalls/syscall_32.tbl
+++ b/arch/x86/entry/syscalls/syscall_32.tbl
@@ -454,3 +454,4 @@
- 447 i386 futex_wait sys_futex_wait
- 448 i386 futex_wake sys_futex_wake
- 449 i386 futex_waitv sys_futex_waitv compat_sys_futex_waitv
-+450 i386 futex_requeue sys_futex_requeue compat_sys_futex_requeue
+ 448 i386 futex_wait sys_futex_wait
+ 449 i386 futex_wake sys_futex_wake
+ 450 i386 futex_waitv sys_futex_waitv compat_sys_futex_waitv
++451 i386 futex_requeue sys_futex_requeue compat_sys_futex_requeue
diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl
index bad4aca3e9ba..a1a39ed156e8 100644
--- a/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/arch/x86/entry/syscalls/syscall_64.tbl
@@ -371,6 +371,7 @@
- 447 common futex_wait sys_futex_wait
- 448 common futex_wake sys_futex_wake
- 449 common futex_waitv sys_futex_waitv
-+450 common futex_requeue sys_futex_requeue
+ 448 common futex_wait sys_futex_wait
+ 449 common futex_wake sys_futex_wake
+ 450 common futex_waitv sys_futex_waitv
++451 common futex_requeue sys_futex_requeue
#
# Due to a historical design error, certain syscalls are numbered differently
@@ -1924,8 +1924,8 @@ index 1179d3f02d65..78d30c06b217 100644
+__SC_COMP(__NR_futex_requeue, sys_futex_requeue, compat_sys_futex_requeue)
+
#undef __NR_syscalls
--#define __NR_syscalls 450
-+#define __NR_syscalls 451
+-#define __NR_syscalls 451
++#define __NR_syscalls 452
/*
* 32 bit systems traditionally used different
@@ -2553,20 +2553,15 @@ index 0efcd494daab..d61f1df94360 100644
--- a/tools/testing/selftests/futex/functional/.gitignore
+++ b/tools/testing/selftests/futex/functional/.gitignore
@@ -6,3 +6,4 @@ futex_wait_private_mapped_file
- futex_wait_timeout
- futex_wait_uninitialized_heap
futex_wait_wouldblock
+ futex_wait
+ futex_requeue
+futex2_wait
diff --git a/tools/testing/selftests/futex/functional/Makefile b/tools/testing/selftests/futex/functional/Makefile
index 23207829ec75..9b334f190759 100644
--- a/tools/testing/selftests/futex/functional/Makefile
+++ b/tools/testing/selftests/futex/functional/Makefile
-@@ -1,10 +1,11 @@
- # SPDX-License-Identifier: GPL-2.0
--INCLUDES := -I../include -I../../
-+INCLUDES := -I../include -I../../ -I../../../../../usr/include/
- CFLAGS := $(CFLAGS) -g -O2 -Wall -D_GNU_SOURCE -pthread $(INCLUDES)
- LDLIBS := -lpthread -lrt
+@@ -1,6 +1,7 @@
HEADERS := \
../include/futextest.h \
@@ -2575,11 +2570,11 @@ index 23207829ec75..9b334f190759 100644
../include/logging.h
TEST_GEN_FILES := \
@@ -14,7 +15,8 @@ TEST_GEN_FILES := \
- futex_requeue_pi_signal_restart \
- futex_requeue_pi_mismatched_ops \
futex_wait_uninitialized_heap \
-- futex_wait_private_mapped_file
-+ futex_wait_private_mapped_file \
+ futex_wait_private_mapped_file \
+ futex_wait \
+- futex_requeue
++ futex_requeue \
+ futex2_wait
TEST_PROGS := run.sh
@@ -2804,9 +2799,9 @@ index 1acb6ace1680..3730159c865a 100755
--- a/tools/testing/selftests/futex/functional/run.sh
+++ b/tools/testing/selftests/futex/functional/run.sh
@@ -73,3 +73,6 @@ echo
+
echo
- ./futex_wait_uninitialized_heap $COLOR
- ./futex_wait_private_mapped_file $COLOR
+ ./futex_requeue $COLOR
+
+echo
+./futex2_wait $COLOR
@@ -2898,11 +2893,10 @@ index 000000000000..917ac8909a3b
--
2.31.1
-
-From daefe54ab3e913048e88050a66f81d5e678287c0 Mon Sep 17 00:00:00 2001
+From ccc384997de6ef7014440514b7e7acfe5c35202c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Almeida?= <andrealmeid@collabora.com>
Date: Fri, 5 Feb 2021 10:34:01 -0300
-Subject: [PATCH 08/14] selftests: futex2: Add timeout test
+Subject: [PATCH 05/10] selftests: futex2: Add timeout test
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@@ -2911,113 +2905,70 @@ Adapt existing futex wait timeout file to test the same mechanism for
futex2. futex2 accepts only absolute 64bit timers, but supports both
monotonic and realtime clocks.
-Signed-off-by: André Almeida <andrealmeid@collabora.com>
+Signed-off-by: André Almeida <andrealmeid@collabora.com>
---
- .../futex/functional/futex_wait_timeout.c | 58 ++++++++++++++++---
- 1 file changed, 49 insertions(+), 9 deletions(-)
+ .../futex/functional/futex_wait_timeout.c | 24 +++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/futex/functional/futex_wait_timeout.c b/tools/testing/selftests/futex/functional/futex_wait_timeout.c
-index ee55e6d389a3..4569bf303b05 100644
+index 1f8f6daaf1e7..d20f54745c2e 100644
--- a/tools/testing/selftests/futex/functional/futex_wait_timeout.c
+++ b/tools/testing/selftests/futex/functional/futex_wait_timeout.c
-@@ -11,6 +11,7 @@
- *
- * HISTORY
- * 2009-Nov-6: Initial version by Darren Hart <dvhart@linux.intel.com>
-+ * 2021-Feb-5: Add futex2 test by André <andrealmeid@collabora.com>
- *
- *****************************************************************************/
-
-@@ -20,7 +21,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
--#include "futextest.h"
+@@ -17,6 +17,14 @@
+
+ #include <pthread.h>
+ #include "futextest.h"
++
++#include <errno.h>
++#include <getopt.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <time.h>
+#include "futex2test.h"
#include "logging.h"
-
+
#define TEST_NAME "futex-wait-timeout"
-@@ -40,7 +41,8 @@ void usage(char *prog)
+@@ -92,8 +100,8 @@ static int futex_get_abs_timeout(clockid_t clockid, struct timespec *to,
int main(int argc, char *argv[])
{
futex_t f1 = FUTEX_INITIALIZER;
-- struct timespec to;
+ struct timespec to = {.tv_sec = 0, .tv_nsec = timeout_ns};
-+ struct timespec64 to64;
int res, ret = RET_PASS;
+- struct timespec to;
+ pthread_t thread;
int c;
-
-@@ -65,22 +67,60 @@ int main(int argc, char *argv[])
+
+@@ -118,7 +126,7 @@ int main(int argc, char *argv[])
}
-
+
ksft_print_header();
-- ksft_set_plan(1);
-+ ksft_set_plan(3);
+- ksft_set_plan(7);
++ ksft_set_plan(9);
ksft_print_msg("%s: Block on a futex and wait for timeout\n",
basename(argv[0]));
ksft_print_msg("\tArguments: timeout=%ldns\n", timeout_ns);
-
-- /* initialize timeout */
-- to.tv_sec = 0;
-- to.tv_nsec = timeout_ns;
--
- info("Calling futex_wait on f1: %u @ %p\n", f1, &f1);
- res = futex_wait(&f1, f1, &to, FUTEX_PRIVATE_FLAG);
- if (!res || errno != ETIMEDOUT) {
-- fail("futex_wait returned %d\n", ret < 0 ? errno : ret);
-+ ksft_test_result_fail("futex_wait returned %d\n", ret < 0 ? errno : ret);
-+ ret = RET_FAIL;
-+ } else {
-+ ksft_test_result_pass("futex_wait timeout succeeds\n");
-+ }
-+
+@@ -175,6 +183,18 @@ int main(int argc, char *argv[])
+ res = futex_lock_pi(&futex_pi, NULL, 0, FUTEX_CLOCK_REALTIME);
+ test_timeout(res, &ret, "futex_lock_pi invalid timeout flag", ENOSYS);
+
+ /* setting absolute monotonic timeout for futex2 */
-+ if (gettime64(CLOCK_MONOTONIC, &to64))
-+ error("gettime64 failed\n", errno);
-+
-+ to64.tv_nsec += timeout_ns;
-+
-+ if (to64.tv_nsec >= 1000000000) {
-+ to64.tv_sec++;
-+ to64.tv_nsec -= 1000000000;
-+ }
-+
-+ info("Calling futex2_wait on f1: %u @ %p\n", f1, &f1);
-+ res = futex2_wait(&f1, f1, FUTEX_32, &to64);
-+ if (!res || errno != ETIMEDOUT) {
-+ ksft_test_result_fail("futex2_wait monotonic returned %d\n", ret < 0 ? errno : ret);
-+ ret = RET_FAIL;
-+ } else {
-+ ksft_test_result_pass("futex2_wait monotonic timeout succeeds\n");
-+ }
++ if (futex_get_abs_timeout(CLOCK_MONOTONIC, &to, timeout_ns))
++ return RET_FAIL;
++ res = futex2_wait(&f1, f1, FUTEX_32, &to);
++ test_timeout(res, &ret, "futex2_wait monotonic", ETIMEDOUT);
+
+ /* setting absolute realtime timeout for futex2 */
-+ if (gettime64(CLOCK_REALTIME, &to64))
-+ error("gettime64 failed\n", errno);
-+
-+ to64.tv_nsec += timeout_ns;
-+
-+ if (to64.tv_nsec >= 1000000000) {
-+ to64.tv_sec++;
-+ to64.tv_nsec -= 1000000000;
-+ }
++ if (futex_get_abs_timeout(CLOCK_REALTIME, &to, timeout_ns))
++ return RET_FAIL;
++ res = futex2_wait(&f1, f1, FUTEX_32 | FUTEX_CLOCK_REALTIME, &to);
++ test_timeout(res, &ret, "futex2_wait realtime", ETIMEDOUT);
+
-+ info("Calling futex2_wait on f1: %u @ %p\n", f1, &f1);
-+ res = futex2_wait(&f1, f1, FUTEX_32 | FUTEX_CLOCK_REALTIME, &to64);
-+ if (!res || errno != ETIMEDOUT) {
-+ ksft_test_result_fail("futex2_wait realtime returned %d\n", ret < 0 ? errno : ret);
- ret = RET_FAIL;
-+ } else {
-+ ksft_test_result_pass("futex2_wait realtime timeout succeeds\n");
- }
-
-- print_result(TEST_NAME, ret);
-+ ksft_print_cnts();
+ ksft_print_cnts();
return ret;
}
---
-2.31.1
-
+--
+2.33.0
From ffc9b6260a0a8f12da9aa20f3c0a91bf90e732aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Almeida?= <andrealmeid@collabora.com>
@@ -3139,9 +3090,9 @@ diff --git a/tools/testing/selftests/futex/functional/.gitignore b/tools/testing
index d61f1df94360..d0b8f637b786 100644
--- a/tools/testing/selftests/futex/functional/.gitignore
+++ b/tools/testing/selftests/futex/functional/.gitignore
-@@ -7,3 +7,4 @@ futex_wait_timeout
- futex_wait_uninitialized_heap
- futex_wait_wouldblock
+@@ -9,3 +9,4 @@
+ futex_wait
+ futex_requeue
futex2_wait
+futex2_waitv
diff --git a/tools/testing/selftests/futex/functional/Makefile b/tools/testing/selftests/futex/functional/Makefile
@@ -3149,9 +3100,9 @@ index 9b334f190759..09c08ccdeaf2 100644
--- a/tools/testing/selftests/futex/functional/Makefile
+++ b/tools/testing/selftests/futex/functional/Makefile
@@ -16,7 +16,8 @@ TEST_GEN_FILES := \
- futex_requeue_pi_mismatched_ops \
- futex_wait_uninitialized_heap \
futex_wait_private_mapped_file \
+ futex_wait \
+ futex_requeue \
- futex2_wait
+ futex2_wait \
+ futex2_waitv
@@ -3403,8 +3354,8 @@ diff --git a/tools/testing/selftests/futex/functional/.gitignore b/tools/testing
index d0b8f637b786..af7557e821da 100644
--- a/tools/testing/selftests/futex/functional/.gitignore
+++ b/tools/testing/selftests/futex/functional/.gitignore
-@@ -8,3 +8,4 @@ futex_wait_uninitialized_heap
- futex_wait_wouldblock
+@@ -10,3 +10,4 @@
+ futex_requeue
futex2_wait
futex2_waitv
+futex2_requeue
@@ -3413,8 +3364,8 @@ index 09c08ccdeaf2..3ccb9ea58ddd 100644
--- a/tools/testing/selftests/futex/functional/Makefile
+++ b/tools/testing/selftests/futex/functional/Makefile
@@ -17,7 +17,8 @@ TEST_GEN_FILES := \
- futex_wait_uninitialized_heap \
- futex_wait_private_mapped_file \
+ futex_wait \
+ futex_requeue \
futex2_wait \
- futex2_waitv
+ futex2_waitv \