From patchwork Fri Jun 2 17:02:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 70553 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 D441E3857704 for ; Fri, 2 Jun 2023 17:02:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D441E3857704 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1685725366; bh=388UDYMrwyVRWRpvYSlGMtQqCDMy2aGW5+mxImuBfHI=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=SB5WJ5jaoK6hN5Oh+gQhAoO4bJ1yAR9kX3DC4T4Fk0YT9nv/OyO3DqYKAQp0s0jk3 rUv3pWWTB/rHU0QZ05panPnM5KWFWMUFJlkEqwQfxRx1rurHBvDQBrffubK3xslHUw Sq+tXgXZq/mrTu/KrToOIZcxeyDLhC2lb2hPCAZ0= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oa1-x2a.google.com (mail-oa1-x2a.google.com [IPv6:2001:4860:4864:20::2a]) by sourceware.org (Postfix) with ESMTPS id F0E3E3858D32 for ; Fri, 2 Jun 2023 17:02:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F0E3E3858D32 Received: by mail-oa1-x2a.google.com with SMTP id 586e51a60fabf-1a27ffe9dcdso1938008fac.2 for ; Fri, 02 Jun 2023 10:02:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685725333; x=1688317333; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=388UDYMrwyVRWRpvYSlGMtQqCDMy2aGW5+mxImuBfHI=; b=hxZFbTAXLhGLfJBWKdjnBSPolk6P1yYj83019d+4jP/bOkbgHq52IUu66wrS1KYM/4 wOoOTNyd6swJI3QHIVmI4w0pfffTp6fazkxexU1/4m838urP4u47YhSxKoR3pzPcHq45 IgoBZKBDIRJZK+quCsiTVBOgAr8/T4ssdlVV7iXSlabOGU+M33gTSRzz8dtvYCjpb8cv btQNoHfRfOzPxbSgih6DNu6xCU7ean7I6JC4gv1/gu2nlNquBw44QykuuGrls4UxhLPu 0fRMR0Pt0RKzd/dqW5odMgMjhQR2fi5Qf2z4AINJh0tEf5efjunhz7TV05AOwtGxWpX2 Xr8Q== X-Gm-Message-State: AC+VfDxTw785b0/9XHFAbJtn89U7GbH95+uxk8nqwlBViZqmSjGjQeOa FN9VyGsvYZ+43LZYlYYTqAnJMnifCHpJlAJJAmo= X-Google-Smtp-Source: ACHHUZ6VvvY/Usd6Xm5mfyQai/NVp7BMNBD7jnIAAg+TxrUoFYjk4Ufm9/0gYfAnQZhg7VpJk0oMTQ== X-Received: by 2002:a05:6870:822a:b0:192:ba3b:a18 with SMTP id n42-20020a056870822a00b00192ba3b0a18mr2259528oae.51.1685725333493; Fri, 02 Jun 2023 10:02:13 -0700 (PDT) Received: from mandiga.. ([2804:1b3:a7c1:fe49:2366:8bb3:f3aa:b9fc]) by smtp.gmail.com with ESMTPSA id x16-20020a05683000d000b006ad3ed04973sm798970oto.8.2023.06.02.10.02.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Jun 2023 10:02:12 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH] time: Also check for EPERM while trying to clock_settime Date: Fri, 2 Jun 2023 14:02:09 -0300 Message-Id: <20230602170209.33275-1-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_SBL_CSS, 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: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Container management default seccomp filter [1] only accepts clock_settime if process has also CAP_SYS_TIME. So also handle EPERM as well. Also adapt the test to libsupport and add a proper Copyright header. Checked on aarch64-linux-gnu. Reviewed-by: Carlos O'Donell --- time/tst-clock2.c | 59 ++++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/time/tst-clock2.c b/time/tst-clock2.c index 4c8fb9f247..9d1980e858 100644 --- a/time/tst-clock2.c +++ b/time/tst-clock2.c @@ -1,43 +1,44 @@ -/* Test setting the monotonic clock. */ +/* Test setting the monotonic clock. + Copyright (C) 2007-2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. -#include -#include + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -#if defined CLOCK_MONOTONIC && defined _POSIX_MONOTONIC_CLOCK + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. -# include -# include + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include +#include -static int +int do_test (void) { +#if defined CLOCK_MONOTONIC && defined _POSIX_MONOTONIC_CLOCK if (sysconf (_SC_MONOTONIC_CLOCK) <= 0) - return 0; + FAIL_UNSUPPORTED ("_SC_MONOTONIC_CLOCK not supported"); struct timespec ts; - if (clock_gettime (CLOCK_MONOTONIC, &ts) != 0) - { - puts ("clock_gettime(CLOCK_MONOTONIC) failed"); - return 1; - } + TEST_COMPARE (clock_gettime (CLOCK_MONOTONIC, &ts), 0); /* Setting the monotonic clock must fail. */ - if (clock_settime (CLOCK_MONOTONIC, &ts) != -1) - { - puts ("clock_settime(CLOCK_MONOTONIC) did not fail"); - return 1; - } - if (errno != EINVAL) - { - printf ("clock_settime(CLOCK_MONOTONIC) set errno to %d, expected %d\n", - errno, EINVAL); - return 1; - } - return 0; -} -# define TEST_FUNCTION do_test () + TEST_VERIFY (clock_settime (CLOCK_MONOTONIC, &ts) == -1); + TEST_VERIFY (errno == EINVAL || errno == EPERM); + return 0; #else -# define TEST_FUNCTION 0 + return EXIT_UNSUPPORTED; #endif -#include "../test-skeleton.c" +} + +#include