From nobody Thu Sep 28 22:28:15 2023 X-Original-To: dev-commits-src-all@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 4RxSmb5X3Qz4vhYJ; Thu, 28 Sep 2023 22:28:15 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4RxSmb55xYz3QXm; Thu, 28 Sep 2023 22:28:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1695940095; 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=NTYQN7pRA8oAY/00N1vrMf1CIYEY+4vVY/H334YfTOE=; b=LrOAN/dcOnJJQl65qxOeWjZEMkIAuzPBObqJmiEc76DkLgKSyCw5JggqZm8kqNtBbkeh/u BapJUBuQmnpO7zDxcOcw0wvH2Th9wVoZU6lWce1KcV5KXKSR4cnwVN13ESLiU11Zqy9ddC 8kRtDlAptoOJk7JAun/4CPDFyVpIakZ3tBAjnwwt9MLsL3KrcDrHSybiI2Ds78XRxY4KAM 7xlkJETj/7en7AQH1bVQo1pWZhDr8BmsuDfZCTzczDvPdXa67VcMAc5kO7PiGiUH9oh+lz qsHCGsmpgAt3zYRUJjjN6PgaABrN1qe5WF1leuqXrCbdz7iCLxQZ4bKLzzR6yw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1695940095; a=rsa-sha256; cv=none; b=F3HTGM1xEqaIFQNDhetPgHYoyFg10hb3wO7/u3wh0DrEGeG/dAb7a1+Z+taM4aQ/UO6BWp S574zi6p+21BxUBLDp6WS2DbrpS1SlrTwqLKE/fsS3tFQmb5h95madza9Nu0Rl8QoYAXNp xgQQSmBvS2q+reyPZlCg433fJEINzYGKUAw698LMxcs5QUWFUwIy7aH18y0RKgmvvercpN ++l0V+gyifsP/d4HtWC9dTG6pwfuUg4pogC6c5WB7qfRg7jeD0tVdntPcKg+Y4bGtuIr6f bD6EaPdBRAVQhS4Il2xC1ARIPZu1BOwlGY29p+qpFPMn2/S8DYDI2NUSWQdRPw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1695940095; 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=NTYQN7pRA8oAY/00N1vrMf1CIYEY+4vVY/H334YfTOE=; b=DMdnWjMaijt9AeAr2ZpMYKQqM3qkN88TR7LUfrryu0qu/YKiVpGSrop8CayQh7QvaM/6/J z7T3PP3gYdJvRpjW0enSX4/mafcDxgkjffPocUxAu92zqcWpGnuIzA3HtaCjMbVcEU+IJu grcVAsdAINRWIG6jMvI+9pC4Hma1V3Owwpo6rwSm0ICG/+bOG+MJF1yuc5hwloqM00iHDv 623mx5QCcN42iddTDQcrD+zX9ZwgU3bUG88dXPNL+Zz52Vyysyxn8aGgmjun+6mpN1SayY 8EtLlAMjJ/2Aps6nFTClWUPQfrzNvh4QVe+AaSvmI+KJAalMtmC0XPIFpSBaUw== 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 4RxSmb44RVzgB7; Thu, 28 Sep 2023 22:28:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 38SMSFSr073948; Thu, 28 Sep 2023 22:28:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 38SMSFpD073945; Thu, 28 Sep 2023 22:28:15 GMT (envelope-from git) Date: Thu, 28 Sep 2023 22:28:15 GMT Message-Id: <202309282228.38SMSFpD073945@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Warner Losh Subject: git: fa786d4da669 - releng/14.0 - timerfd: compute fflags before calling falloc List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/releng/14.0 X-Git-Reftype: branch X-Git-Commit: fa786d4da669dcb02884d79565f6dd1b8e0db1c7 Auto-Submitted: auto-generated The branch releng/14.0 has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=fa786d4da669dcb02884d79565f6dd1b8e0db1c7 commit fa786d4da669dcb02884d79565f6dd1b8e0db1c7 Author: Mateusz Guzik AuthorDate: 2023-08-25 15:09:21 +0000 Commit: Warner Losh CommitDate: 2023-09-28 22:26:20 +0000 timerfd: compute fflags before calling falloc While here dodge list locking in timerfd_adjust if empty. (cherry picked from commit 5eab523053db79b4bd4f926c7d7ac04444d9c1da) Approved by: re (cperciva@) (cherry picked from commit fc0c24482f11c403480c5219810a27d8591a8fb6) Approved-by: re (cperciva) --- sys/kern/sys_timerfd.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sys/kern/sys_timerfd.c b/sys/kern/sys_timerfd.c index 2bf2a05c443c..c8b45a926b02 100644 --- a/sys/kern/sys_timerfd.c +++ b/sys/kern/sys_timerfd.c @@ -129,6 +129,9 @@ timerfd_jumped(void) struct timerfd *tfd; struct timespec boottime, diff; + if (LIST_EMPTY(&timerfd_list)) + return; + timerfd_getboottime(&boottime); sx_xlock(&timerfd_list_lock); LIST_FOREACH(tfd, &timerfd_list, entry) { @@ -418,7 +421,7 @@ kern_timerfd_create(struct thread *td, int clockid, int flags) { struct file *fp; struct timerfd *tfd; - int error, fd, fflags = 0; + int error, fd, fflags; AUDIT_ARG_VALUE(clockid); AUDIT_ARG_FFLAGS(flags); @@ -427,8 +430,12 @@ kern_timerfd_create(struct thread *td, int clockid, int flags) return (EINVAL); if ((flags & ~(TFD_CLOEXEC | TFD_NONBLOCK)) != 0) return (EINVAL); + + fflags = FREAD; if ((flags & TFD_CLOEXEC) != 0) fflags |= O_CLOEXEC; + if ((flags & TFD_NONBLOCK) != 0) + fflags |= FNONBLOCK; error = falloc(td, &fp, &fd, fflags); if (error != 0) @@ -447,9 +454,6 @@ kern_timerfd_create(struct thread *td, int clockid, int flags) LIST_INSERT_HEAD(&timerfd_list, tfd, entry); sx_xunlock(&timerfd_list_lock); - fflags = FREAD; - if ((flags & TFD_NONBLOCK) != 0) - fflags |= FNONBLOCK; finit(fp, fflags, DTYPE_TIMERFD, tfd, &timerfdops); fdrop(fp, td);