aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Muckle <smuckle@google.com>2018-02-01 23:22:19 +0000
committerandroid-build-merger <android-build-merger@google.com>2018-02-01 23:22:19 +0000
commitd758b2ba2a95bda117863b956c6948499ace6efd (patch)
treecb16d83ebd6b8517796a5eb5507c19c1a610846c
parentdaf54e903d0a40def409165832d40b971d9b4aec (diff)
parentb31f7a7e098201784fabcd458234be1e191ce00c (diff)
downloadlinux-kselftest-d758b2ba2a95bda117863b956c6948499ace6efd.tar.gz
ANDROID: update patch stack
am: b31f7a7e09 Change-Id: Ia206fbe1059b675be9f62da48afb4506d0bac007
-rw-r--r--android/patches/0006-selftests-exec-include-cwd-in-long-path-calculation.patch113
-rw-r--r--android/patches/0014-selftests-vdso_test-support-ARM64-targets.patch67
-rw-r--r--android/patches/0016-ksft_exit_skip_noreturn.patch13
-rw-r--r--android/patches/0017-seccomp_bpf_disable_tests.patch126
4 files changed, 139 insertions, 180 deletions
diff --git a/android/patches/0006-selftests-exec-include-cwd-in-long-path-calculation.patch b/android/patches/0006-selftests-exec-include-cwd-in-long-path-calculation.patch
deleted file mode 100644
index f43c46ea9683..000000000000
--- a/android/patches/0006-selftests-exec-include-cwd-in-long-path-calculation.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 95e8aad6260e79f8c8f6afc52c5b6b0bb447342f Mon Sep 17 00:00:00 2001
-From: Steve Muckle <smuckle@google.com>
-Date: Fri, 6 Oct 2017 15:18:31 -0700
-Subject: [PATCH] selftests/exec: include cwd in long path calculation
-
-When creating a pathname close to PATH_MAX to test execveat, factor in
-the current working directory path otherwise we end up with an absolute
-path that is longer than PATH_MAX. While execveat() may succeed, subsequent
-calls to the kernel from the runtime environment which are required to
-successfully execute the test binary/script may fail because of this.
-
-To keep the semantics of the test the same, rework the relative pathname
-part of the test to be relative to the root directory so it isn't
-decreased by the length of the current working directory path.
-
-Bug: 67016227
-Test: run vts-kernel -m VtsKernelLinuxKselftestStaging
-Change-Id: Ib407d1afc52de7e58cb208fd41ade6e8c38d8bfd
-Signed-off-by: Steve Muckle <smuckle@google.com>
----
- tools/testing/selftests/exec/execveat.c | 27 +++++++++++++++++++--------
- 1 file changed, 19 insertions(+), 8 deletions(-)
-
-diff --git a/tools/testing/selftests/exec/execveat.c b/tools/testing/selftests/exec/execveat.c
-index 8d5d1d2ee7c1..67cd4597db2b 100644
---- a/tools/testing/selftests/exec/execveat.c
-+++ b/tools/testing/selftests/exec/execveat.c
-@@ -147,7 +147,7 @@ static void exe_cp(const char *src, const char *dest)
- }
-
- #define XX_DIR_LEN 200
--static int check_execveat_pathmax(int dot_dfd, const char *src, int is_script)
-+static int check_execveat_pathmax(int root_dfd, const char *src, int is_script)
- {
- int fail = 0;
- int ii, count, len;
-@@ -156,20 +156,30 @@ static int check_execveat_pathmax(int dot_dfd, const char *src, int is_script)
-
- if (*longpath == '\0') {
- /* Create a filename close to PATH_MAX in length */
-+ char *cwd = getcwd(NULL, 0);
-+
-+ if (!cwd) {
-+ printf("Failed to getcwd(), errno=%d (%s)\n",
-+ errno, strerror(errno));
-+ return 2;
-+ }
-+ strcpy(longpath, cwd);
-+ strcat(longpath, "/");
- memset(longname, 'x', XX_DIR_LEN - 1);
- longname[XX_DIR_LEN - 1] = '/';
- longname[XX_DIR_LEN] = '\0';
-- count = (PATH_MAX - 3) / XX_DIR_LEN;
-+ count = (PATH_MAX - 3 - strlen(cwd)) / XX_DIR_LEN;
- for (ii = 0; ii < count; ii++) {
- strcat(longpath, longname);
- mkdir(longpath, 0755);
- }
-- len = (PATH_MAX - 3) - (count * XX_DIR_LEN);
-+ len = (PATH_MAX - 3 - strlen(cwd)) - (count * XX_DIR_LEN);
- if (len <= 0)
- len = 1;
- memset(longname, 'y', len);
- longname[len] = '\0';
- strcat(longpath, longname);
-+ free(cwd);
- }
- exe_cp(src, longpath);
-
-@@ -190,7 +200,7 @@ static int check_execveat_pathmax(int dot_dfd, const char *src, int is_script)
- }
-
- /*
-- * Execute as a long pathname relative to ".". If this is a script,
-+ * Execute as a long pathname relative to "/". If this is a script,
- * the interpreter will launch but fail to open the script because its
- * name ("/dev/fd/5/xxx....") is bigger than PATH_MAX.
- *
-@@ -200,10 +210,10 @@ static int check_execveat_pathmax(int dot_dfd, const char *src, int is_script)
- * the exit status shall be 126."), so allow either.
- */
- if (is_script)
-- fail += check_execveat_invoked_rc(dot_dfd, longpath, 0,
-+ fail += check_execveat_invoked_rc(root_dfd, longpath + 1, 0,
- 127, 126);
- else
-- fail += check_execveat(dot_dfd, longpath, 0);
-+ fail += check_execveat(root_dfd, longpath + 1, 0);
-
- return fail;
- }
-@@ -218,6 +228,7 @@ static int run_tests(void)
- int subdir_dfd_ephemeral = open_or_die("subdir.ephemeral",
- O_DIRECTORY|O_RDONLY);
- int dot_dfd = open_or_die(".", O_DIRECTORY|O_RDONLY);
-+ int root_dfd = open_or_die("/", O_DIRECTORY|O_RDONLY);
- int dot_dfd_path = open_or_die(".", O_DIRECTORY|O_RDONLY|O_PATH);
- int dot_dfd_cloexec = open_or_die(".", O_DIRECTORY|O_RDONLY|O_CLOEXEC);
- int fd = open_or_die("execveat", O_RDONLY);
-@@ -353,8 +364,8 @@ static int run_tests(void)
- /* Attempt to execute relative to non-directory => ENOTDIR */
- fail += check_execveat_fail(fd, "execveat", 0, ENOTDIR);
-
-- fail += check_execveat_pathmax(dot_dfd, "execveat", 0);
-- fail += check_execveat_pathmax(dot_dfd, "script", 1);
-+ fail += check_execveat_pathmax(root_dfd, "execveat", 0);
-+ fail += check_execveat_pathmax(root_dfd, "script", 1);
- return fail;
- }
-
---
-2.16.0.rc1.238.g530d649a79-goog
-
diff --git a/android/patches/0014-selftests-vdso_test-support-ARM64-targets.patch b/android/patches/0014-selftests-vdso_test-support-ARM64-targets.patch
deleted file mode 100644
index 22a161cc3826..000000000000
--- a/android/patches/0014-selftests-vdso_test-support-ARM64-targets.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From ff03117f4a19cdf536f9bb7e28c9785c18616412 Mon Sep 17 00:00:00 2001
-From: Greg Hackmann <ghackmann@google.com>
-Date: Wed, 1 Nov 2017 14:34:26 -0700
-Subject: [PATCH] selftests: vdso_test: support ARM64 targets
-
-ARM64's vDSO exports its gettimeofday() implementation with a different
-name (__kernel_gettimeofday) and version (LINUX_2.6.39) from other
-architectures. Add a corresponding special-case to vdso_test.
-
-Signed-off-by: Greg Hackmann <ghackmann@google.com>
-Bug: 67017029
-Test: make -j vts
-Change-Id: I54b2dfa99717da22b12783a98ef19291b5c581f5
-Signed-off-by: Steve Muckle <smuckle@google.com>
----
- tools/testing/selftests/vDSO/vdso_test.c | 19 ++++++++++++++++---
- 1 file changed, 16 insertions(+), 3 deletions(-)
-
-diff --git a/tools/testing/selftests/vDSO/vdso_test.c b/tools/testing/selftests/vDSO/vdso_test.c
-index 8daeb7d7032c..2df26bd0099c 100644
---- a/tools/testing/selftests/vDSO/vdso_test.c
-+++ b/tools/testing/selftests/vDSO/vdso_test.c
-@@ -19,6 +19,19 @@ extern void *vdso_sym(const char *version, const char *name);
- extern void vdso_init_from_sysinfo_ehdr(uintptr_t base);
- extern void vdso_init_from_auxv(void *auxv);
-
-+/*
-+ * ARM64's vDSO exports its gettimeofday() implementation with a different
-+ * name and version from other architectures, so we need to handle it as
-+ * a special case.
-+ */
-+#if defined(__aarch64__)
-+const char *version = "LINUX_2.6.39";
-+const char *name = "__kernel_gettimeofday";
-+#else
-+const char *version = "LINUX_2.6";
-+const char *name = "__vdso_gettimeofday";
-+#endif
-+
- int main(int argc, char **argv)
- {
- unsigned long sysinfo_ehdr = getauxval(AT_SYSINFO_EHDR);
-@@ -31,10 +44,10 @@ int main(int argc, char **argv)
-
- /* Find gettimeofday. */
- typedef long (*gtod_t)(struct timeval *tv, struct timezone *tz);
-- gtod_t gtod = (gtod_t)vdso_sym("LINUX_2.6", "__vdso_gettimeofday");
-+ gtod_t gtod = (gtod_t)vdso_sym(version, name);
-
- if (!gtod) {
-- printf("Could not find __vdso_gettimeofday\n");
-+ printf("Could not find %s\n", name);
- return 1;
- }
-
-@@ -45,7 +58,7 @@ int main(int argc, char **argv)
- printf("The time is %lld.%06lld\n",
- (long long)tv.tv_sec, (long long)tv.tv_usec);
- } else {
-- printf("__vdso_gettimeofday failed\n");
-+ printf("%s failed\n", name);
- }
-
- return 0;
---
-2.16.0.rc1.238.g530d649a79-goog
-
diff --git a/android/patches/0016-ksft_exit_skip_noreturn.patch b/android/patches/0016-ksft_exit_skip_noreturn.patch
new file mode 100644
index 000000000000..9126d71bc971
--- /dev/null
+++ b/android/patches/0016-ksft_exit_skip_noreturn.patch
@@ -0,0 +1,13 @@
+diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h
+index 1ae565ed9bf0..05a4b9ad80c9 100644
+--- a/tools/testing/selftests/kselftest.h
++++ b/tools/testing/selftests/kselftest.h
+@@ -165,7 +165,7 @@ static inline int ksft_exit_xpass(void)
+ exit(KSFT_XPASS);
+ }
+
+-static inline int ksft_exit_skip(const char *msg, ...)
++static inline void __noreturn ksft_exit_skip(const char *msg, ...)
+ {
+ if (msg) {
+ va_list args;
diff --git a/android/patches/0017-seccomp_bpf_disable_tests.patch b/android/patches/0017-seccomp_bpf_disable_tests.patch
new file mode 100644
index 000000000000..75b35938db06
--- /dev/null
+++ b/android/patches/0017-seccomp_bpf_disable_tests.patch
@@ -0,0 +1,126 @@
+diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c
+index 34d9582aefb4..843ba80c401b 100644
+--- a/tools/testing/selftests/seccomp/seccomp_bpf.c
++++ b/tools/testing/selftests/seccomp/seccomp_bpf.c
+@@ -12,12 +12,14 @@
+ * we need to use the kernel's siginfo.h file and trick glibc
+ * into accepting it.
+ */
++#if defined(__GLIBC_PREREQ)
+ #if !__GLIBC_PREREQ(2, 26)
+ # include <asm/siginfo.h>
+ # define __have_siginfo_t 1
+ # define __have_sigval_t 1
+ # define __have_sigevent_t 1
+ #endif
++#endif
+
+ #include <errno.h>
+ #include <linux/filter.h>
+@@ -404,6 +406,7 @@ TEST(empty_prog)
+ EXPECT_EQ(EINVAL, errno);
+ }
+
++#if 0
+ TEST(log_all)
+ {
+ struct sock_filter filter[] = {
+@@ -425,6 +428,7 @@ TEST(log_all)
+ /* getppid() should succeed and be logged (no check for logging) */
+ EXPECT_EQ(parent, syscall(__NR_getppid));
+ }
++#endif
+
+ TEST_SIGNAL(unknown_ret_is_kill_inside, SIGSYS)
+ {
+@@ -677,6 +681,7 @@ void kill_thread_or_group(struct __test_metadata *_metadata, bool kill_process)
+ exit(42);
+ }
+
++#if 0
+ TEST(KILL_thread)
+ {
+ int status;
+@@ -695,6 +700,7 @@ TEST(KILL_thread)
+ ASSERT_TRUE(WIFEXITED(status));
+ ASSERT_EQ(42, WEXITSTATUS(status));
+ }
++#endif
+
+ TEST(KILL_process)
+ {
+@@ -1242,6 +1248,7 @@ TEST_F(precedence, trace_is_fourth_in_any_order)
+ EXPECT_EQ(-1, syscall(__NR_getpid));
+ }
+
++#if 0
+ TEST_F(precedence, log_is_fifth)
+ {
+ pid_t mypid, parent;
+@@ -1281,6 +1288,7 @@ TEST_F(precedence, log_is_fifth_in_any_order)
+ /* Should also work just fine */
+ EXPECT_EQ(mypid, syscall(__NR_getpid));
+ }
++#endif
+
+ #ifndef PTRACE_O_TRACESECCOMP
+ #define PTRACE_O_TRACESECCOMP 0x00000080
+@@ -1717,8 +1725,10 @@ void tracer_ptrace(struct __test_metadata *_metadata, pid_t tracee,
+
+ if (nr == __NR_getpid)
+ change_syscall(_metadata, tracee, __NR_getppid);
++#ifdef __NR_open
+ if (nr == __NR_open)
+ change_syscall(_metadata, tracee, -1);
++#endif
+ }
+
+ FIXTURE_DATA(TRACE_syscall) {
+@@ -1784,6 +1794,7 @@ TEST_F(TRACE_syscall, ptrace_syscall_redirected)
+ EXPECT_NE(self->mypid, syscall(__NR_getpid));
+ }
+
++#ifdef __NR_open
+ TEST_F(TRACE_syscall, ptrace_syscall_dropped)
+ {
+ /* Swap SECCOMP_RET_TRACE tracer for PTRACE_SYSCALL tracer. */
+@@ -1794,6 +1805,7 @@ TEST_F(TRACE_syscall, ptrace_syscall_dropped)
+ /* Tracer should skip the open syscall, resulting in EPERM. */
+ EXPECT_SYSCALL_RETURN(EPERM, syscall(__NR_open));
+ }
++#endif
+
+ TEST_F(TRACE_syscall, syscall_allowed)
+ {
+@@ -2059,6 +2071,7 @@ TEST(seccomp_syscall_mode_lock)
+ }
+ }
+
++#if 0
+ /*
+ * Test detection of known and unknown filter flags. Userspace needs to be able
+ * to check if a filter flag is supported by the current kernel and a good way
+@@ -2119,6 +2132,7 @@ TEST(detect_seccomp_filter_flags)
+ flag);
+ }
+ }
++#endif
+
+ TEST(TSYNC_first)
+ {
+@@ -2759,6 +2773,7 @@ TEST(syscall_restart)
+ _metadata->passed = 0;
+ }
+
++#if 0
+ TEST_SIGNAL(filter_flag_log, SIGSYS)
+ {
+ struct sock_filter allow_filter[] = {
+@@ -2851,6 +2866,7 @@ TEST(get_action_avail)
+ EXPECT_EQ(ret, -1);
+ EXPECT_EQ(errno, EOPNOTSUPP);
+ }
++#endif
+
+ /*
+ * TODO: