From nobody Fri Jul 17 15:49:26 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 4h1vVH4LzZz6l4lx for ; Fri, 17 Jul 2026 15:49:27 +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 4h1vVH0dQRz3qch for ; Fri, 17 Jul 2026 15:49:27 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1784303367; 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=ZkMXnIu/CFTzUWan6iSYYtPMHCSbZm7/sombecf2ANQ=; b=DryEMZLQmWcrIoVwfvM5BsCOI5ydFVC+XA8VtAzs2nFxwq0/Updr+LXv+O9aeqDcHFwPqn HPvmRwLVW8gb7vStuLQlIxrajgi0Luvk2qTHeyXIC7bSrDL+KryOZDt1mq1k5ImUG11hRW TW4qQdn8KZziwBGAVZ8ihS5KA9rjewM97NHDoVlhmssYLwMxk2UPZPlPb6KEqusQOu8WIB HUr+66WDYSBLI92EdPzNMlJi4VyVoutWeiwaVJAi1+uqRZ5MSEAno5CQzTror6GqiUXsfQ Lx+wa1hpQMgxtI3fnznQjjSNKNIV3x42CqXF7bktWOQ2Dar3pCbx/aVCYiSAxA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1784303367; a=rsa-sha256; cv=none; b=GZ85nJ60dB9mFHYFj/ZAlDcIov/4zUWxobWfP+l86b1ST484yvtcl9g8SlLT+yGAwdVK2v hO0dAXDhQHE1UTkIXjJUlOAEKWI0q8ghN2cX9/Fw3UFZNRWNzXvL2oeKaE2Ct1wqaXzere 1Tp2OYWH+etnbN0E0+zHA/yjUDsVbdoQgRp8NlwqoOT7Ga5OQvVoPskltOQh83hLvMj8mX edLcGSQdjtM1NXT1Vo8t0bNc7MP+EIgLL8Zyg51r2KoULqu5EpcR6WHpN8/FJSLhI5/Y8X tkxbCXZFgYIkrOLrKHT6/uSvys15rQSs79V5X8OQglvUM4J2IT6bfNq4fw5utw== 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=1784303367; 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=ZkMXnIu/CFTzUWan6iSYYtPMHCSbZm7/sombecf2ANQ=; b=moSnFblD2+rBxdz512/of0DqJNmH1Pt73iDQE/SOLjBQf5Ho+DyB8ATt8Z/P1Muoi7b530 8j/Gd5DcvVSXzHb9yxIXT6spUOkXNoRJPNedU+50ENRulkWZU99up5GPsx2DTIPg5PGsuN 3hOzaoqfRAZPNJWfitQhqUUotWgBQKgzbEuQDYiMuACWcKCLQcJYcfdYXmTkJyYYRK/y3Y pq909GsRTLWMwNc+BwzqI/IPnjBO4k0ztPlKKCqpj22jATszA57vShmovoybBfeBBuQ0fy Ia4nzIMqut4AGQ6FHMAUHlohn8mra4aLNXAssWs3h14qfoTFsFo64xU67lPvig== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4h1vVG6nkmztYN for ; Fri, 17 Jul 2026 15:49:26 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f92e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 17 Jul 2026 15:49:26 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Bjoern A. Zeeb Subject: git: cb13e826ec45 - main - 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/main X-Git-Reftype: branch X-Git-Commit: cb13e826ec45e11e964e1921d281e0a06ca5e152 Auto-Submitted: auto-generated Date: Fri, 17 Jul 2026 15:49:26 +0000 Message-Id: <6a5a4f06.1f92e.4ecfb42d@gitrepo.freebsd.org> The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=cb13e826ec45e11e964e1921d281e0a06ca5e152 commit cb13e826ec45e11e964e1921d281e0a06ca5e152 Author: Bjoern A. Zeeb AuthorDate: 2026-02-03 22:13:24 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-07-17 15:48:54 +0000 LinuxKPI: skbuff: add reference counting to the skb Sponsored by: The FreeBSD Foundation MFC after: 3 days --- 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