From patchwork Sun Jun 26 20:59:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Wielaard X-Patchwork-Id: 55416 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 151B9385040D for ; Sun, 26 Jun 2022 21:10:54 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from gnu.wildebeest.org (gnu.wildebeest.org [45.83.234.184]) by sourceware.org (Postfix) with ESMTPS id D98B63850402 for ; Sun, 26 Jun 2022 21:10:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D98B63850402 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org Received: from reform (deer0x0e.wildebeest.org [172.31.17.144]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id CD15930005B6; Sun, 26 Jun 2022 23:10:27 +0200 (CEST) Received: by reform (Postfix, from userid 1000) id 8E8BF2E83468; Sun, 26 Jun 2022 23:10:27 +0200 (CEST) From: Mark Wielaard To: libc-alpha@sourceware.org Subject: [PATCH 1/4] time/tst-clock2.c: clock_settime CLOCK_MONOTONIC might return EPERM Date: Sun, 26 Jun 2022 22:59:12 +0200 Message-Id: <20220626205915.33201-2-mark@klomp.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220626205915.33201-1-mark@klomp.org> References: <20220626205915.33201-1-mark@klomp.org> MIME-Version: 1.0 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Wielaard Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" clock_settime can return errno EPERM if it does not have permission to set the clock indicated. The test expects setting the monotonic clock must fail. Which it does. But the errno can be either EINVAL or EPERM. --- time/tst-clock2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/time/tst-clock2.c b/time/tst-clock2.c index 4c8fb9f247..3f46220832 100644 --- a/time/tst-clock2.c +++ b/time/tst-clock2.c @@ -27,10 +27,10 @@ do_test (void) puts ("clock_settime(CLOCK_MONOTONIC) did not fail"); return 1; } - if (errno != EINVAL) + if (errno != EINVAL && errno != EPERM) { - printf ("clock_settime(CLOCK_MONOTONIC) set errno to %d, expected %d\n", - errno, EINVAL); + printf ("clock_settime(CLOCK_MONOTONIC) set errno to %d, expected %d or %d\n", + errno, EINVAL, EPERM); return 1; } return 0; From patchwork Sun Jun 26 20:59:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Wielaard X-Patchwork-Id: 55417 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4C0413850202 for ; Sun, 26 Jun 2022 21:11:15 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from gnu.wildebeest.org (gnu.wildebeest.org [45.83.234.184]) by sourceware.org (Postfix) with ESMTPS id 2D7AB38515F6 for ; Sun, 26 Jun 2022 21:10:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2D7AB38515F6 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org Received: from reform (deer0x0e.wildebeest.org [172.31.17.144]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id 21B5830005B6; Sun, 26 Jun 2022 23:10:37 +0200 (CEST) Received: by reform (Postfix, from userid 1000) id 066A62E83468; Sun, 26 Jun 2022 23:10:37 +0200 (CEST) From: Mark Wielaard To: libc-alpha@sourceware.org Subject: [PATCH 2/4] tst-pkey.c: Handle no permission to alloc memory protection keys Date: Sun, 26 Jun 2022 22:59:13 +0200 Message-Id: <20220626205915.33201-3-mark@klomp.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220626205915.33201-1-mark@klomp.org> References: <20220626205915.33201-1-mark@klomp.org> MIME-Version: 1.0 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Wielaard Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" pkey_alloc might fail with errno EPERM if there is no permission to allocate memory protection keys. Use FAIL_UNSUPPORTED in that case. --- sysdeps/unix/sysv/linux/tst-pkey.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sysdeps/unix/sysv/linux/tst-pkey.c b/sysdeps/unix/sysv/linux/tst-pkey.c index df51f695bc..48a20fa3e0 100644 --- a/sysdeps/unix/sysv/linux/tst-pkey.c +++ b/sysdeps/unix/sysv/linux/tst-pkey.c @@ -203,6 +203,9 @@ do_test (void) FAIL_UNSUPPORTED ("no keys available or kernel does not support memory" " protection keys"); + if (errno == EPERM) + FAIL_UNSUPPORTED + ("no permission to alloc memory protection keys"); FAIL_EXIT1 ("pkey_alloc: %m"); } TEST_COMPARE (pkey_get (keys[0]), 0); From patchwork Sun Jun 26 20:59:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Wielaard X-Patchwork-Id: 55418 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 68B713850879 for ; Sun, 26 Jun 2022 21:11:36 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from gnu.wildebeest.org (gnu.wildebeest.org [45.83.234.184]) by sourceware.org (Postfix) with ESMTPS id 302613850225 for ; Sun, 26 Jun 2022 21:10:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 302613850225 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org Received: from reform (deer0x0e.wildebeest.org [172.31.17.144]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id 25BA330005B6; Sun, 26 Jun 2022 23:10:41 +0200 (CEST) Received: by reform (Postfix, from userid 1000) id 087BA2E83468; Sun, 26 Jun 2022 23:10:41 +0200 (CEST) From: Mark Wielaard To: libc-alpha@sourceware.org Subject: [PATCH 3/4] tst-pidfd.c: Test is UNSUPPORTED without PTRACE_MODE_ATTACH_REALCREDS Date: Sun, 26 Jun 2022 22:59:14 +0200 Message-Id: <20220626205915.33201-4-mark@klomp.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220626205915.33201-1-mark@klomp.org> References: <20220626205915.33201-1-mark@klomp.org> MIME-Version: 1.0 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Wielaard Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" pidfd_getfd will fail with errno EPERM if the calling process did not have PTRACE_MODE_ATTACH_REALCREDS permissions. Use FAIL_UNSUPPORTED in that case. --- sysdeps/unix/sysv/linux/tst-pidfd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sysdeps/unix/sysv/linux/tst-pidfd.c b/sysdeps/unix/sysv/linux/tst-pidfd.c index d93b6faa6f..28349b2f91 100644 --- a/sysdeps/unix/sysv/linux/tst-pidfd.c +++ b/sysdeps/unix/sysv/linux/tst-pidfd.c @@ -95,8 +95,10 @@ do_test (void) kernel has pidfd support that we can test. */ int r = pidfd_getfd (0, 0, 1); TEST_VERIFY_EXIT (r == -1); - if (errno == ENOSYS) - FAIL_UNSUPPORTED ("kernel does not support pidfd_getfd, skipping test"); + if (errno == ENOSYS || errno == EPERM) + FAIL_UNSUPPORTED ("kernel does not support pidfd_getfd," + " or we don't have PTRACE_MODE_ATTACH_REALCREDS" + " permissions, skipping test"); } ppid = getpid (); From patchwork Sun Jun 26 20:59:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Wielaard X-Patchwork-Id: 55419 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 806BD385AE5F for ; Sun, 26 Jun 2022 21:11:57 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from gnu.wildebeest.org (gnu.wildebeest.org [45.83.234.184]) by sourceware.org (Postfix) with ESMTPS id 3BD903850864 for ; Sun, 26 Jun 2022 21:10:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3BD903850864 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org Received: from reform (deer0x0e.wildebeest.org [172.31.17.144]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id 3156E30005B6; Sun, 26 Jun 2022 23:10:48 +0200 (CEST) Received: by reform (Postfix, from userid 1000) id EB6762E83468; Sun, 26 Jun 2022 23:10:47 +0200 (CEST) From: Mark Wielaard To: libc-alpha@sourceware.org Subject: [PATCH 4/4] tst-personality.c: Handle personality failing with errno EPERM Date: Sun, 26 Jun 2022 22:59:15 +0200 Message-Id: <20220626205915.33201-5-mark@klomp.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220626205915.33201-1-mark@klomp.org> References: <20220626205915.33201-1-mark@klomp.org> MIME-Version: 1.0 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Wielaard Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" When running under a systemd service with LockPersonality set or in a container with a personality seccomp filter the personality syscall might fail with errno EPERM for some personality calls so that the kernel execution domain can not be changed from the default. Return 77 (to indicate the test is unsupported) in that case. --- sysdeps/unix/sysv/linux/tst-personality.c | 37 ++++++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/sysdeps/unix/sysv/linux/tst-personality.c b/sysdeps/unix/sysv/linux/tst-personality.c index 5bbc3c4d0b..8fbba2b262 100644 --- a/sysdeps/unix/sysv/linux/tst-personality.c +++ b/sysdeps/unix/sysv/linux/tst-personality.c @@ -30,13 +30,40 @@ do_test (void) errno = 0xdefaced; saved_persona = personality (0xffffffff); - if (personality (test_persona) != saved_persona - || personality (0xffffffff) == -1 - || personality (PER_LINUX) == -1 - || personality (0xffffffff) != PER_LINUX - || 0xdefaced != errno) + if (saved_persona == -1 && errno == EPERM) + return 77; + + if (personality (test_persona) != saved_persona) + { + if (errno == EPERM) + { + rc = 77; + goto out; + } + else + rc = 1; + } + + if (personality (0xffffffff) == -1) + rc = 1; + + if (personality (PER_LINUX) == -1) + { + if (errno == EPERM) + { + rc = 77; + goto out; + } + rc = 1; + } + + if (personality (0xffffffff) != PER_LINUX) + rc = 1; + + if (0xdefaced != errno) rc = 1; +out: (void) personality (saved_persona); return rc; }