On Wed, May 21, 2025 at 04:40:43PM +0200, Sebastian Andrzej Siewior wrote: > On 2025-05-21 16:24:59 [+0200], Pablo Neira Ayuso wrote: > > Hi Sebastian, > Hi Pablo, > > > On Mon, May 12, 2025 at 12:28:44PM +0200, Sebastian Andrzej Siewior wrote: > > [...] > > > diff --git a/net/ipv6/netfilter/nf_dup_ipv6.c b/net/ipv6/netfilter/nf_dup_ipv6.c > > > index 0c39c77fe8a8a..b903c62c00c9e 100644 > > > --- a/net/ipv6/netfilter/nf_dup_ipv6.c > > > +++ b/net/ipv6/netfilter/nf_dup_ipv6.c > > > @@ -48,7 +48,7 @@ void nf_dup_ipv6(struct net *net, struct sk_buff *skb, unsigned int hooknum, > > > const struct in6_addr *gw, int oif) > > > { > > > local_bh_disable(); > > > - if (this_cpu_read(nf_skb_duplicated)) > > > + if (current->in_nf_duplicate) > > > > Netfilter runs from the forwarding path too, where no current process > > is available. > > If you refer to in-softirq with no task running then there is the idle > task/ swapper which is pointed to by current in this case. There is one > idle task for each CPU, they don't migrate. Thanks for explaining. I am going to place this series in nf-next.