Thread (10 messages) flat view 10 messages, 4 authors, 19d ago

Re: [PATCH net 1/1] ip6_tunnel: use skb_cow_head() in ip6_tnl_xmit()

From: Ido Schimmel <idosch@nvidia.com>
Date: 2026-08-09 07:58:08

On Fri, Aug 07, 2026 at 10:31:29AM +0200, Paolo Abeni wrote:
My my concern is against possible regressions. At this late stage of the
release cycle we want to avoid them, even if there are already similar
pre-existing bugs.

AFAICS pktgen sets the per pkt_gen device F_SHARED flag unconditionally
and push shared skbs when F_SHARED is set regardless the NIC priv_flags.

What about addressing both issues in the same series? Something like
the following (completely untested) would do:
I don't have time to look into pktgen right now. I disagree with
conditioning the merging of this fix - which makes IPv6 tunnels
consistent with existing ones - on fixing a benchmarking / testing
module that is not available to unprivileged users.
quoted hunk ↗ jump to hunk
---
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index ee64f3012321..a7126d639586 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -1385,6 +1385,9 @@ static ssize_t pktgen_if_write(struct file *file,
 					return -EINVAL;
 				pkt_dev->flags &= ~flag;
 			} else {
+				if (!(pkt_dev->odev->priv_flags &
+				      IFF_TX_SKB_SHARING))
+					return -EINVAL;
 				pkt_dev->flags |= flag;
Doesn't this reject the enablement of any flag (not just "SHARED") on a
device that doesn't advertise IFF_TX_SKB_SHARING?
quoted hunk ↗ jump to hunk
 			}
 
@@ -3868,13 +3871,15 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname)
 	pkt_dev->svlan_id = 0xffff;
 	pkt_dev->burst = 1;
 	pkt_dev->node = NUMA_NO_NODE;
-	pkt_dev->flags = F_SHARED;	/* SKB shared by default */
+	pkt_dev->flags = 0;
 
 	err = pktgen_setup_dev(t->net, pkt_dev, ifname);
 	if (err)
 		goto out1;
-	if (pkt_dev->odev->priv_flags & IFF_TX_SKB_SHARING)
+	if (pkt_dev->odev->priv_flags & IFF_TX_SKB_SHARING) {
 		pkt_dev->clone_skb = pg_clone_skb_d;
+		pkt_dev->flags |= F_SHARED;
+	}
 
 	pkt_dev->entry = proc_create_data(ifname, 0600, t->net->proc_dir,
 					  &pktgen_if_proc_ops, pkt_dev);
---
/P
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help