From nobody Mon Jul 27 00:10:40 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 4h7fBT0ky0z6m9Cs for ; Mon, 27 Jul 2026 00:10:41 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4h7fBS4661z43P9 for ; Mon, 27 Jul 2026 00:10:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785111040; 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=MpUv+aDejiKstdl1fuhJyxqNW8c3wVgSgheoNkC8ikg=; b=Oi2c90Z+sLkj8I37C9Txo12WBlLVW/uE7X4AfSMP1RyV0J+U67LFr5yxAs0ngMqJB+CkYU uWHTg8cgOZx7EE3cSeVr0OSSIhIIMfW5IpLdJmWiyUm3nC0ktNRSglQSrJ9/dHdiju/H/O ZdSuh3wFbRHDW3h2j9G667CeTQcPcSDTcPIyZ2/F1rb/fN/C6wxhsD3vuWhDQJUBs0w1c+ yUNuQD4K3qajqhvhfxTgMexjuBtH1GJQuDk9HI6yoVbYQMVTQG5TiH0/t30ACzPrUqw1y9 NFfEsRt16igFhmg/8xtTFuZHY8ljiaNZ7NG2+gD8/4Kl88aa4g9Y0j0pgCRs1w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1785111040; a=rsa-sha256; cv=none; b=AGhBr6FIsdmU8i34m05S74P64rvv5SBMS0CYkjFMXlxj9Tdf22HlBmBrD6LYeDkjFy6C0N 01N7HlH4B+bBSD6bypkMwMVVcvpQyWOFZtNXRquM36I+AAXDIowv3yJEQPGdeTQrdSxycO Yq0+gWREaRikH5GHdTrbAWtLbl5A24KetVCJhwQBEARDR1IffTG+t7QA/+oW/bKFbd8A/K feqid8uBC38vdnRUzHdgCypJHiWlCT8AaFRZ6dEBywov7SicSCc19YW0AG7rHnAedFMzMT tshLCLYsRq8hnhA+f6iIpjvg4c1RFWFpj+5aeoQC0aHYqb8c7DHuDoc1MnwE/g== 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=1785111040; 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=MpUv+aDejiKstdl1fuhJyxqNW8c3wVgSgheoNkC8ikg=; b=hCdIO3n5c+MYQf8k4UgjYlmSCFgwWuUQ4AZGFqoAQsJT6iCS+fsYvr36E5RFMAOJwP6GgL odjwuh1pbTszk79muXYxyT2pADQz1IIcJ70iVgP3kmK6n14qno+j/Jo5vYj19Wrx6gXik7 rOGW0yKgRFsFQ5LZWycWZRtdt/YGgBSqssfM732T6/hSDE3e0kMLA4b5RuxhIGgfWBwviA PEUwDhHFTrmGJDc+5n2oApDDt/PleVN/FTNSRMT2oTMFTO1PRtBs9gvBT5pnhan9K40QW5 79tD9bcXPfAj4cpCsGYQzf4T76yn7A/AUzVDeA+CqGzfcUbm7g4ekGbCdNg9aA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4h7fBS305Nzl3c for ; Mon, 27 Jul 2026 00:10:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 26e39 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 27 Jul 2026 00:10:40 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Bjoern A. Zeeb Subject: git: 36ed9a84d17b - stable/15 - LinuxKPI: skbuff: add reference counting to the skb 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 36ed9a84d17b58b83612bb4ec32bddfc56f991b2 Auto-Submitted: auto-generated Date: Mon, 27 Jul 2026 00:10:40 +0000 Message-Id: <6a66a200.26e39.35db8a5c@gitrepo.freebsd.org> The branch stable/15 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=36ed9a84d17b58b83612bb4ec32bddfc56f991b2 commit 36ed9a84d17b58b83612bb4ec32bddfc56f991b2 Author: Bjoern A. Zeeb AuthorDate: 2026-02-03 22:13:24 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-07-26 16:48:25 +0000 LinuxKPI: skbuff: add reference counting to the skb Sponsored by: The FreeBSD Foundation (cherry picked from commit cb13e826ec45e11e964e1921d281e0a06ca5e152) --- sys/compat/linuxkpi/common/src/linux_skbuff.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/sys/compat/linuxkpi/common/src/linux_skbuff.c b/sys/compat/linuxkpi/common/src/linux_skbuff.c index 5af9633691a6..d57c277c3267 100644 --- a/sys/compat/linuxkpi/common/src/linux_skbuff.c +++ b/sys/compat/linuxkpi/common/src/linux_skbuff.c @@ -140,6 +140,7 @@ linuxkpi_alloc_skb(size_t size, gfp_t gfp) skb->head = skb->data = (uint8_t *)p; skb_reset_tail_pointer(skb); skb->end = skb->head + size; + refcount_set(&skb->refcnt, 1); SKB_TRACE_FMT(skb, "data %p size %zu", (skb) ? skb->data : NULL, size); return (skb); @@ -180,6 +181,7 @@ linuxkpi_build_skb(void *data, size_t fragsz) skb->head = skb->data = data; skb_reset_tail_pointer(skb); skb->end = skb->head + fragsz; + refcount_set(&skb->refcnt, 1); return (skb); } @@ -288,6 +290,20 @@ lkpi___skb_linearize(struct sk_buff *skb) return (0); } +static bool +lkpi_skb_refcount_release(struct sk_buff *skb) +{ + if (skb == NULL) + return (false); + + /* Do we need further tests to avoid freeing this one? */ + + if (!refcount_dec_and_test(&skb->refcnt)) + return (false); + + return (true); +} + void linuxkpi_kfree_skb(struct sk_buff *skb) { @@ -298,6 +314,11 @@ linuxkpi_kfree_skb(struct sk_buff *skb) if (skb == NULL) return; + if (!lkpi_skb_refcount_release(skb)) { + SKB_TRACE_FMT(skb, "not freed due to refcnt"); + return; + } + /* * XXX TODO this will go away once we have skb backed by mbuf. * currently we allow the mbuf to stay around and use a private