From nobody Mon Apr 13 04:01:53 2026 X-Original-To: dev-commits-src-branches@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 4fvDHj4ryHz6YCXP for ; Mon, 13 Apr 2026 04:01:53 +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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fvDHj3Vmvz3wLR for ; Mon, 13 Apr 2026 04:01:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776052913; 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=uqrstS+fESvbCeBP5u5f7HpFszKPvYYemnV/r43WxYY=; b=fVFkU4F8/EuAN7NqdbwCcSC0Q99b2P2zExDFUWlrI2QRjlCkzifFBO7BjN/GZOafBkHTL6 09Zqjhga6ujvxnc1OUoum49tcsWQm6r0z8jVcUI7nkSBhN77xawYf0MbaAFbLZm1AqIyGI heXNUZnJzAnsPQ0joMLUSvhwopZPNtmko8MC0Zkus/A6tIiyB7mEU1Te8nXayDclis8TBH T4Un+lGjT12Zi8kHnMcKrpSCpP9WDERAWsQPyo8zJM9UAPFn8TbSiZymcgro1QyyF0w1vF 79nXbgRyvcasn47OWP0ycf0WviIEt8PIanCR85P4xcXWS41geKlyDPRzLtwWvg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776052913; a=rsa-sha256; cv=none; b=x8trt7LXIGkOiDzpHzbdYd4kK0BgCwZ2pNFBck6JSzE9dMX6ytYC5m1OdEF8FAX63FmDgW rChEe3Asc3Kfz1Ii8RbTtv5tVLn9ug5BeeROf1hBmYws46h2o5PcFDaxLoplVnoiOanYXk 6YumqMMUKduDdX/zQ6RPzJ1HeVPtOmlo/w7w5B3pmYfmk5h1HvgnS78m1rtfD0pZbYDLo3 CESwK6mNVBxPghdjum6+CZAufwKlMPC/pJGbR5Ux1KP0MGrI7I5ZXNZRC2j8lCimAAgBMF /GnmN6Y1bH8fRZzk8VweuW5O7C5YHpW3ZUtfo409MK2p0XrsQdEgP1QXEPZl1g== 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=1776052913; 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=uqrstS+fESvbCeBP5u5f7HpFszKPvYYemnV/r43WxYY=; b=noHxWAafWiakrnqYZCGC8McyFO8UwxxjaPrg8GDUQ1bOSJPfbOSZXZ19n+n01srf7RDLm8 9ICYS6fbsuCxQUH0OthKIqKzUyx1lzsUBWm4y9y4Z8Rk3RAv/2mAb6YTxpOAU3qahy2mMD /1fSQ396YyjwgWGVel99eJATdwk8lhgv+44uKFD/6fr5nzS1LINKdF9+o1tt7R+AZ8YFgI xt8C2zuG89g+QALQiZhbTBY41i387Hc2N8EpZVKNjPIB2knjasYUP1tV0QUda4D5fkAWUf g9EcrLOyTGlrrbiYxtNHOTcEyPaFKODDNfj7hd7cv22GFaA/1ky8AlpBDAPpnA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fvDHj2Nfnzp1M for ; Mon, 13 Apr 2026 04:01:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1e959 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 13 Apr 2026 04:01:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 94429503486f - stable/15 - kqueue: compare against the size in kqueue_expand List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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/stable/15 X-Git-Reftype: branch X-Git-Commit: 94429503486f0738b5670b9a203f48fc2bd5fabf Auto-Submitted: auto-generated Date: Mon, 13 Apr 2026 04:01:53 +0000 Message-Id: <69dc6ab1.1e959.3738f878@gitrepo.freebsd.org> The branch stable/15 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=94429503486f0738b5670b9a203f48fc2bd5fabf commit 94429503486f0738b5670b9a203f48fc2bd5fabf Author: Kyle Evans AuthorDate: 2026-04-01 22:30:48 +0000 Commit: Kyle Evans CommitDate: 2026-04-13 03:12:33 +0000 kqueue: compare against the size in kqueue_expand This is a cosmetic change, rather than a functional one: comparing the knlistsize against the fd requires a little bit of mental gymnastics to confirm that this is fine and not doing unnecessary work in some cases. Notably, one must consider that kq_knlistsize only grows in KQEXTENT chunks, which means that concurrent threads trying to grow the kqueue to consecutive fds will usually not result in the list being replaced twice. One can also more clearly rule out classes of arithmetic problems in the final `else` branch. Reviewed by: kib, markj (cherry picked from commit 0b4f0e0515d0c7ec855cd654ae5dc562f4931cae) --- sys/kern/kern_event.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index 915d34ac1695..f3723783146a 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -2017,10 +2017,11 @@ kqueue_expand(struct kqueue *kq, const struct filterops *fops, uintptr_t ident, to_free = NULL; if (fops->f_isfd) { fd = ident; - if (kq->kq_knlistsize <= fd) { - size = kq->kq_knlistsize; - while (size <= fd) + size = atomic_load_int(&kq->kq_knlistsize); + if (size <= fd) { + do { size += KQEXTENT; + } while (size <= fd); list = malloc(size * sizeof(*list), M_KQUEUE, mflag); if (list == NULL) return ENOMEM; @@ -2028,7 +2029,7 @@ kqueue_expand(struct kqueue *kq, const struct filterops *fops, uintptr_t ident, if ((kq->kq_state & KQ_CLOSING) != 0) { to_free = list; error = EBADF; - } else if (kq->kq_knlistsize > fd) { + } else if (kq->kq_knlistsize >= size) { to_free = list; } else { if (kq->kq_knlist != NULL) { @@ -2043,6 +2044,7 @@ kqueue_expand(struct kqueue *kq, const struct filterops *fops, uintptr_t ident, kq->kq_knlistsize = size; kq->kq_knlist = list; } + MPASS(error != 0 || kq->kq_knlistsize > fd); KQ_UNLOCK(kq); } } else {