Zbigniew Jędrzejewski-Szmek d044ab
From 5d56b6fb41fb29cd636e64f079f9a1e1982820be Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek d044ab
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Zbigniew Jędrzejewski-Szmek d044ab
Date: Sat, 15 Jul 2017 19:28:02 +0000
Zbigniew Jędrzejewski-Szmek d044ab
Subject: [PATCH] seccomp: arm64/x32 do not have _sysctl
Zbigniew Jędrzejewski-Szmek d044ab
Zbigniew Jędrzejewski-Szmek d044ab
So don't even try to added the filter to reduce noise.
Zbigniew Jędrzejewski-Szmek d044ab
The test is updated to skip calling _sysctl because the kernel prints
Zbigniew Jędrzejewski-Szmek d044ab
an oops-like message that is confusing and unhelpful:
Zbigniew Jędrzejewski-Szmek d044ab
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: test-seccomp[8448]: syscall -10080
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: Code: aa0503e4 aa0603e5 aa0703e6 d4000001 (b13ffc1f)
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: CPU: 3 PID: 8448 Comm: test-seccomp Tainted: G        W       4.11.8-300.fc26.aarch64 #1
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: Hardware name: raspberrypi rpi/rpi, BIOS 2017.05 06/24/2017
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: task: ffff80002bb0bb00 task.stack: ffff800036354000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: PC is at 0xffff8669c7c4
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: LR is at 0xaaaac64b6750
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: pc : [<0000ffff8669c7c4>] lr : [<0000aaaac64b6750>] pstate: 60000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: sp : 0000ffffdc640fd0
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x29: 0000ffffdc640fd0 x28: 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x27: 0000000000000000 x26: 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x25: 0000000000000000 x24: 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x23: 0000000000000000 x22: 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x21: 0000aaaac64b4940 x20: 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x19: 0000aaaac64b88f8 x18: 0000000000000020
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x17: 0000ffff8669c7a0 x16: 0000aaaac64d2ee0
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x15: 0000000000000000 x14: 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x13: 203a657275746365 x12: 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x11: 0000ffffdc640418 x10: 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x9 : 0000000000000005 x8 : 00000000ffffd8a0
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x7 : 7f7f7f7f7f7f7f7f x6 : 7f7f7f7f7f7f7f7f
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x5 : 65736d68716f7277 x4 : 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x3 : 0000000000000008 x2 : 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel: x1 : 0000000000000000 x0 : 0000000000000000
Zbigniew Jędrzejewski-Szmek d044ab
Jul 15 21:07:01 rpi3 kernel:
Zbigniew Jędrzejewski-Szmek d044ab
Zbigniew Jędrzejewski-Szmek d044ab
(cherry picked from commit 1e20e640132c700c23494bb9e2619afb83878380)
Zbigniew Jędrzejewski-Szmek d044ab
(cherry picked from commit 2e64e8f46d726689a44d4084226fe3e0ea255c29)
Zbigniew Jędrzejewski-Szmek d044ab
---
Zbigniew Jędrzejewski-Szmek d044ab
 src/shared/seccomp-util.c | 4 ++++
Zbigniew Jędrzejewski-Szmek d044ab
 src/test/test-seccomp.c   | 4 ++++
Zbigniew Jędrzejewski-Szmek d044ab
 2 files changed, 8 insertions(+)
Zbigniew Jędrzejewski-Szmek d044ab
Zbigniew Jędrzejewski-Szmek d044ab
diff --git a/src/shared/seccomp-util.c b/src/shared/seccomp-util.c
Zbigniew Jędrzejewski-Szmek d044ab
index 36843d4bf5..1a8bfbe416 100644
Zbigniew Jędrzejewski-Szmek d044ab
--- a/src/shared/seccomp-util.c
Zbigniew Jędrzejewski-Szmek d044ab
+++ b/src/shared/seccomp-util.c
Zbigniew Jędrzejewski-Szmek d044ab
@@ -899,6 +899,10 @@ int seccomp_protect_sysctl(void) {
Zbigniew Jędrzejewski-Szmek d044ab
 
Zbigniew Jędrzejewski-Szmek d044ab
                 log_debug("Operating on architecture: %s", seccomp_arch_to_string(arch));
Zbigniew Jędrzejewski-Szmek d044ab
 
Zbigniew Jędrzejewski-Szmek d044ab
+                if (IN_SET(arch, SCMP_ARCH_X32, SCMP_ARCH_AARCH64))
Zbigniew Jędrzejewski-Szmek d044ab
+                        /* No _sysctl syscall */
Zbigniew Jędrzejewski-Szmek d044ab
+                        continue;
Zbigniew Jędrzejewski-Szmek d044ab
+
Zbigniew Jędrzejewski-Szmek d044ab
                 r = seccomp_init_for_arch(&seccomp, arch, SCMP_ACT_ALLOW);
Zbigniew Jędrzejewski-Szmek d044ab
                 if (r < 0)
Zbigniew Jędrzejewski-Szmek d044ab
                         return r;
Zbigniew Jędrzejewski-Szmek d044ab
diff --git a/src/test/test-seccomp.c b/src/test/test-seccomp.c
Zbigniew Jędrzejewski-Szmek d044ab
index efd145e063..50fe24c794 100644
Zbigniew Jędrzejewski-Szmek d044ab
--- a/src/test/test-seccomp.c
Zbigniew Jędrzejewski-Szmek d044ab
+++ b/src/test/test-seccomp.c
Zbigniew Jędrzejewski-Szmek d044ab
@@ -244,13 +244,17 @@ static void test_protect_sysctl(void) {
Zbigniew Jędrzejewski-Szmek d044ab
         assert_se(pid >= 0);
Zbigniew Jędrzejewski-Szmek d044ab
 
Zbigniew Jędrzejewski-Szmek d044ab
         if (pid == 0) {
Zbigniew Jędrzejewski-Szmek d044ab
+#if __NR__sysctl > 0
Zbigniew Jędrzejewski-Szmek d044ab
                 assert_se(syscall(__NR__sysctl, NULL) < 0);
Zbigniew Jędrzejewski-Szmek d044ab
                 assert_se(errno == EFAULT);
Zbigniew Jędrzejewski-Szmek d044ab
+#endif
Zbigniew Jędrzejewski-Szmek d044ab
 
Zbigniew Jędrzejewski-Szmek d044ab
                 assert_se(seccomp_protect_sysctl() >= 0);
Zbigniew Jędrzejewski-Szmek d044ab
 
Zbigniew Jędrzejewski-Szmek d044ab
+#if __NR__sysctl > 0
Zbigniew Jędrzejewski-Szmek d044ab
                 assert_se(syscall(__NR__sysctl, 0, 0, 0) < 0);
Zbigniew Jędrzejewski-Szmek d044ab
                 assert_se(errno == EPERM);
Zbigniew Jędrzejewski-Szmek d044ab
+#endif
Zbigniew Jędrzejewski-Szmek d044ab
 
Zbigniew Jędrzejewski-Szmek d044ab
                 _exit(EXIT_SUCCESS);
Zbigniew Jędrzejewski-Szmek d044ab
         }