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

Ido Schimmel <[email protected]>
Newsgroups gmane.linux.network
Message-ID <20260809075756.GA2304632@shredder>
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.

> ---
> 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?

>  			}
>  
> @@ -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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.