On 5/29/19 11:08 PM, Stephen Suryaputra wrote: > diff --git a/net/ipv6/reassembly.c b/net/ipv6/reassembly.c > index 1a832f5e190b..9b365c345c34 100644 > --- a/net/ipv6/reassembly.c > +++ b/net/ipv6/reassembly.c > @@ -260,6 +260,9 @@ static int ip6_frag_reasm(struct frag_queue *fq, struct > sk_buff *skb, > int payload_len; > u8 ecn; > > + if (netif_is_l3_master(dev)) > + dev = dev_get_by_index_rcu(net, inet6_iif(skb)); > + > inet_frag_kill(&fq->q); > > ecn = ip_frag_ecn_table[fq->ecn]; >
this part changes skb->dev. Seems like it has an unintended effect if the packet is delivered locally.