diff options
author | gVisor bot <gvisor-bot@google.com> | 2020-04-13 14:13:28 -0700 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2020-04-13 14:13:28 -0700 |
commit | 3f4e826fb3b5e38e50ce6d02effcb03e5b2b2481 (patch) | |
tree | 8374a8cf5214f6ff5ab0b7800622cb7f04a37676 | |
parent | 7ec23972359a1b0bbedb9818bca2283822ee0a43 (diff) | |
parent | 35e6b6bf1aeb909a12fb80cc99d5695408a9eaa5 (diff) |
Merge pull request #2288 from xiaobo55x:fork_test
PiperOrigin-RevId: 306306494
-rw-r--r-- | test/syscalls/linux/fork.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/test/syscalls/linux/fork.cc b/test/syscalls/linux/fork.cc index ff8bdfeb0..853f6231a 100644 --- a/test/syscalls/linux/fork.cc +++ b/test/syscalls/linux/fork.cc @@ -431,7 +431,6 @@ TEST(CloneTest, NewUserNamespacePermitsAllOtherNamespaces) { << "status = " << status; } -#ifdef __x86_64__ // Clone with CLONE_SETTLS and a non-canonical TLS address is rejected. TEST(CloneTest, NonCanonicalTLS) { constexpr uintptr_t kNonCanonical = 1ull << 48; @@ -440,11 +439,25 @@ TEST(CloneTest, NonCanonicalTLS) { // on this. char stack; + // The raw system call interface on x86-64 is: + // long clone(unsigned long flags, void *stack, + // int *parent_tid, int *child_tid, + // unsigned long tls); + // + // While on arm64, the order of the last two arguments is reversed: + // long clone(unsigned long flags, void *stack, + // int *parent_tid, unsigned long tls, + // int *child_tid); +#if defined(__x86_64__) EXPECT_THAT(syscall(__NR_clone, SIGCHLD | CLONE_SETTLS, &stack, nullptr, nullptr, kNonCanonical), SyscallFailsWithErrno(EPERM)); -} +#elif defined(__aarch64__) + EXPECT_THAT(syscall(__NR_clone, SIGCHLD | CLONE_SETTLS, &stack, nullptr, + kNonCanonical, nullptr), + SyscallFailsWithErrno(EPERM)); #endif +} } // namespace } // namespace testing |