From nobody Wed Apr 1 22:33:28 2026 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 4fmKWy6wK0z6YfF3 for ; Wed, 01 Apr 2026 22:33: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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fmKWy2FZ1z3x6Y for ; Wed, 01 Apr 2026 22:33:34 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775082814; 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=lL7ema5ldZgLy9AAZS62VL/eFCGeaJhA+CajftLogqE=; b=RvCaioS7ytQxlEb59ShjE3E4//PCFINt8oqXTvc+oatHpcLgFJDe+5suc5xlsacd9kmYx+ G+zY2Sl/kIlt/5x1b8McipMdDpEyjVPXMzbUph9VxbHLddCRZ9x0GQb3sKNlpllsIHXo9l Gv4NBXth2EB7bhCcNV7ooBz/LvzRBH5b44sPnq/jwYPSphQgypwTkIMS95uL5qqmdTfg3g kvpk5U2ux9c9zZEn9isPMY9JdaIe3m/RN2QVmMkrt2TeIkAUX38m+CDKLScV0F52xPUEyz YRh0YpfQBs3IkaV3aQb+5e2o4ZsClT7OmyKiOFSuGpWbvn3qVxqsaAAsJ7SYHA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775082814; a=rsa-sha256; cv=none; b=nj40ZXM9H8mfhPdWHOx7QB9wNAKm7/1ZsF84aNu2wcttxEScr41MSV9JRbHKwweUaBgs4P XYWt0jelvdD67gA2Bt75XTNen8UnCEWm1tLNvl/jza3JgFjWixxQ57x6m9v9rKtvRzLoRX Iev5DT+lsn44IK0tvkTFiqODzqPrx2a5rOItwwgJysjTqoYE2AuN06pxFZTyhd7Y0iGlez UnPE2gvF3l0ZynvGi4Edz8q6GPdMCaF1SZf9qhaA2iFvlRhySEogy3jhdLeTkcmD9YUeiq YlhX8cg5w87sO+psWRUryrv+tWyRK4nj3YDFBX5kCxTBJCunKnbAHcE1vDGNxA== 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=1775082814; 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=lL7ema5ldZgLy9AAZS62VL/eFCGeaJhA+CajftLogqE=; b=xJehNOJdkORkb/i0738RC4G3WrAJVUy+injf8sktseJpe2GPorz9NJIAtTXzS1pjdZLqAR 8NdZU0m9baMD3uuFVex71pc/Fdvb2mgQHIDtM8jsV4PvSSQ3qMoUMIM/cKr4TdOqVqONuh i1iA347NV2lNYdvptZF5sA0q/PyqkXJrDZFfvgYvYFVCcnTPzNfAFCeaoOeu0UndKqmKsQ 5YYrPedsLJL717iMM3olg3G/MiR2PiXlhW8abSB9ZBLN291SCKnHsAgnxcg3BK7atXM5ui UoetZrqDWsIKUCWj81+RteMtEzQpemSfdzJSJkCv1iBfLLuX3z7EkpYXu/Wvkw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmKWy1jt0zbkm for ; Wed, 01 Apr 2026 22:33:34 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 452a7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 01 Apr 2026 22:33:28 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 0b4f0e0515d0 - main - kqueue: compare against the size in kqueue_expand 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: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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: 0b4f0e0515d0c7ec855cd654ae5dc562f4931cae Auto-Submitted: auto-generated Date: Wed, 01 Apr 2026 22:33:28 +0000 Message-Id: <69cd9d38.452a7.4d5842ab@gitrepo.freebsd.org> The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=0b4f0e0515d0c7ec855cd654ae5dc562f4931cae commit 0b4f0e0515d0c7ec855cd654ae5dc562f4931cae Author: Kyle Evans AuthorDate: 2026-04-01 22:30:48 +0000 Commit: Kyle Evans CommitDate: 2026-04-01 22:30:48 +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 Differential Revision: https://reviews.freebsd.org/D56209 --- 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 f984161bfcd6..2cdc37b710e6 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -2013,10 +2013,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; @@ -2024,7 +2025,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) { @@ -2039,6 +2040,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 {