selftests: pidfd: skip test if unshare fails with EPERM
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 7 Jul 2020 15:39:27 +0000 (11:39 -0400)
committerShuah Khan <skhan@linuxfoundation.org>
Tue, 7 Jul 2020 19:28:58 +0000 (13:28 -0600)
Similar to how ENOSYS causes a skip if pidfd_send_signal is not present,
we can do the same for unshare if it fails with EPERM.  This way, running
the test without privileges causes four tests to skip but no early bail out.

Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/selftests/pidfd/pidfd_test.c

index d2b001425cf8963dcdee815ee6125aad77b93016..c585aaa2acd8a8ac4a7b33e1391ea23f5dd31563 100644 (file)
@@ -162,15 +162,26 @@ static int test_pidfd_send_signal_recycled_pid_fail(void)
        }
 
        ret = unshare(CLONE_NEWPID);
-       if (ret < 0)
+       if (ret < 0) {
+               if (errno == EPERM) {
+                       ksft_test_result_skip("%s test: Unsharing pid namespace not permitted\n",
+                                             test_name);
+                       return 0;
+               }
                ksft_exit_fail_msg("%s test: Failed to unshare pid namespace\n",
                                   test_name);
+       }
 
        ret = unshare(CLONE_NEWNS);
-       if (ret < 0)
-               ksft_exit_fail_msg(
-                       "%s test: Failed to unshare mount namespace\n",
-                       test_name);
+       if (ret < 0) {
+               if (errno == EPERM) {
+                       ksft_test_result_skip("%s test: Unsharing mount namespace not permitted\n",
+                                             test_name);
+                       return 0;
+               }
+               ksft_exit_fail_msg("%s test: Failed to unshare mount namespace\n",
+                                  test_name);
+       }
 
        ret = mount(NULL, "/", NULL, MS_REC | MS_PRIVATE, 0);
        if (ret < 0)