From nobody Thu Jul 10 17:54:34 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4bdMtL6M6fz61LQ0; Thu, 10 Jul 2025 17:54:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bdMtL3ytrz3K4N; Thu, 10 Jul 2025 17:54:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1752170074; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vUPm/NPjZIf8ykT/9ue4cGcSgHt8qSZJUNQzkFEFWlM=; b=HojFXQC+p04cIgaLCyeF6OhU2OOEXkYIwv4+Gj3dsoMON5dmvpgoCZ8qAe/gMlBmUXTqaD vDDm5VaTz24pVtAtafiqHEAp4vtNbR+D0lvzz5QZuiPMtqA5nqu4TME3aHCWMUe2wixT8+ nG+VKCFVAz4A8dVWN3okf+ouBvrhJvOyG9k4zRNdkx1rYRCEry48bRBhoEvWhrWvEBgJAo neKcKPbhgZr0Yx0ygCpJ28wF0mGdfzN/rZJ5/aWoVvjleSupGzJ49au50+yGz1PqLoTwOb kUVRAtpripMtHn0E4E24zZt6WYnei5irNU79/o9FdwdZ0vDRIhhPLP9lr5BGKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1752170074; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vUPm/NPjZIf8ykT/9ue4cGcSgHt8qSZJUNQzkFEFWlM=; b=v3qtY6agbvzGry5iScEL/4mEhy5fdzlJ6IsuTKfO1WIbLEdOvzLqlRkicQnStMKdQD1cuz x3MfRW1oa+VMjAX669H+G9JlzP639bcA1D26Qy/H3fcPNznjbm7EPyS9yEkcUF1PaWESm/ a5Tkw4EEI5SC/uVF3LJ4tSN6ILUpxMRMiTdTQ70lEMqf6jIJWHF0P1d+vYofdLbCojk9+e /qil0TnaTces3cw8uXxh3PIBTkx3IXzPgju2BfDXkjpKioZnUVGyiekzH9Yd/adgcbVS8M To1Xwh3pc5ujNErzvQSzEDBNmoHPTOy9tMVOa8g9BEBeYAG6ratWd/IdqgquUw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1752170074; a=rsa-sha256; cv=none; b=U1Md6OYF0rJ/YXPLa5uCKLNEwLHEoJd3JYIuv37p8SuMCJTtl0Y+M5LlsL6M8Heai2jPNS IWmoEyBnMlbLsFqpi2idHzuYu3Dz6IZit4yG9KNfnfqj+qZjwGhMrZYoqyRJ07xACFpoTy iThC/9eTPLzCszYZb9fiT0y7xOyWUo+r++BCRpwNLUz2a2pAq3CxIRRZdo7tcV93kztYbW Xpx//hA5PCWzuYU4TzljPUvixPT//knZZa51vHK0TmK7EDA/Ri/spjZvvWMU8OtcLy/kAN F60YPZP34u7I8nuAGLakR7B2D1aNpwFMpTEjFAPpcr6cUljueupOCPq9UP0IEQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bdMtL3ZWwz1H7y; Thu, 10 Jul 2025 17:54:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 56AHsYnU072182; Thu, 10 Jul 2025 17:54:34 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 56AHsYSk072179; Thu, 10 Jul 2025 17:54:34 GMT (envelope-from git) Date: Thu, 10 Jul 2025 17:54:34 GMT Message-Id: <202507101754.56AHsYSk072179@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 4c8b54f765c7 - main - lockf: minor cosmetic cleanups, no functional change List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4c8b54f765c7676b4899b72de928bdb6d056dfb2 Auto-Submitted: auto-generated The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=4c8b54f765c7676b4899b72de928bdb6d056dfb2 commit 4c8b54f765c7676b4899b72de928bdb6d056dfb2 Author: Kyle Evans AuthorDate: 2025-06-24 23:08:46 +0000 Commit: Kyle Evans CommitDate: 2025-07-10 17:54:20 +0000 lockf: minor cosmetic cleanups, no functional change Switch various flags from int -> bool. kill(getpid(), foo) and raise(foo) are equivalent in this context, so switch to the latter as a minor preference for readability. Use proper signal fences instead of volatile for our SIGALRM handler. Reviewed by: kib (earlier version), des Differential Revision: https://reviews.freebsd.org/D51027 --- usr.bin/lockf/lockf.c | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/usr.bin/lockf/lockf.c b/usr.bin/lockf/lockf.c index b0e16285998a..16bae36a21e0 100644 --- a/usr.bin/lockf/lockf.c +++ b/usr.bin/lockf/lockf.c @@ -62,35 +62,35 @@ _Static_assert(sizeof(sig_atomic_t) >= sizeof(pid_t), "PIDs cannot be managed safely from a signal handler on this platform."); static sig_atomic_t child = -1; static int lockfd = -1; -static int keep; -static int fdlock; +static bool keep; +static bool fdlock; static int status; static bool termchild; -static volatile sig_atomic_t timed_out; +static sig_atomic_t timed_out; /* * Check if fdlock is implied by the given `lockname`. We'll write the fd that * is represented by it out to ofd, and the caller is expected to do any * necessary validation on it. */ -static int +static bool fdlock_implied(const char *name, long *ofd) { char *endp; long fd; if (strncmp(name, FDLOCK_PREFIX, sizeof(FDLOCK_PREFIX) - 1) != 0) - return (0); + return (false); /* Skip past the prefix. */ name += sizeof(FDLOCK_PREFIX) - 1; errno = 0; fd = strtol(name, &endp, 10); if (errno != 0 || *endp != '\0') - return (0); + return (false); *ofd = fd; - return (1); + return (true); } /* @@ -105,38 +105,36 @@ main(int argc, char **argv) }, sa_prev; sigset_t mask, omask; long long waitsec; + const char *errstr; union lock_subject subj; - int ch, flags, silent, writepid; + int ch, flags; + bool silent, writepid; - silent = keep = writepid = 0; + silent = writepid = false; flags = O_CREAT | O_RDONLY; waitsec = -1; /* Infinite. */ while ((ch = getopt(argc, argv, "knpsTt:w")) != -1) { switch (ch) { case 'k': - keep = 1; + keep = true; break; case 'n': flags &= ~O_CREAT; break; case 's': - silent = 1; + silent = true; break; case 'T': termchild = true; break; case 't': - { - const char *errstr; - waitsec = strtonum(optarg, 0, UINT_MAX, &errstr); if (errstr != NULL) errx(EX_USAGE, "invalid timeout \"%s\"", optarg); - } break; case 'p': - writepid = 1; + writepid = true; flags |= O_TRUNC; /* FALLTHROUGH */ case 'w': @@ -162,7 +160,7 @@ main(int argc, char **argv) * If there aren't any arguments left, then we must be in fdlock mode. */ if (argc == 0 && *lockname != '/') { - fdlock = 1; + fdlock = true; subj.subj_fd = -1; } else { fdlock = fdlock_implied(lockname, &subj.subj_fd); @@ -227,13 +225,16 @@ main(int argc, char **argv) */ lockfd = acquire_lock(&subj, flags | O_NONBLOCK, silent); while (lockfd == -1 && !timed_out && waitsec != 0) { - if (keep || fdlock) + if (keep || fdlock) { lockfd = acquire_lock(&subj, flags, silent); - else { + } else { wait_for_lock(lockname); lockfd = acquire_lock(&subj, flags | O_NONBLOCK, silent); } + + /* timed_out */ + atomic_signal_fence(memory_order_acquire); } if (waitsec > 0) alarm(0); @@ -365,7 +366,7 @@ killed(int sig) kill(child, sig); cleanup(); signal(sig, SIG_DFL); - if (kill(getpid(), sig) == -1) + if (raise(sig) == -1) _Exit(EX_OSERR); } @@ -397,6 +398,7 @@ timeout(int sig __unused) { timed_out = 1; + atomic_signal_fence(memory_order_release); } static void