From: Paolo Abeni <pab...@redhat.com> Date: Fri, 21 Jul 2017 15:55:18 +0200
> diff --git a/net/ipv4/ip_options.c b/net/ipv4/ip_options.c > index 93157f2..fdda973 100644 > --- a/net/ipv4/ip_options.c > +++ b/net/ipv4/ip_options.c > @@ -174,9 +174,6 @@ int __ip_options_echo(struct ip_options *dopt, struct > sk_buff *skb, > doffset -= 4; > } > if (doffset > 3) { > - __be32 daddr = fib_compute_spec_dst(skb); > - > - memcpy(&start[doffset-1], &daddr, 4); > dopt->faddr = faddr; This transformation is required, but in the destination not the source. The red flag is that we are indexing 'start' with 'doffset' instead of 'soffset'.