Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ipv4: optimize fib_compute_spec_dst call in ip_options_echo

Move fib_compute_spec_dst at the only place where it
is needed.

Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Julian Anastasov and committed by
David S. Miller
6255e5ea a16a0d2f

+2 -3
+2 -3
net/ipv4/ip_options.c
··· 93 93 unsigned char *sptr, *dptr; 94 94 int soffset, doffset; 95 95 int optlen; 96 - __be32 daddr; 97 96 98 97 memset(dopt, 0, sizeof(struct ip_options)); 99 98 ··· 103 104 104 105 sptr = skb_network_header(skb); 105 106 dptr = dopt->__data; 106 - 107 - daddr = fib_compute_spec_dst(skb); 108 107 109 108 if (sopt->rr) { 110 109 optlen = sptr[sopt->rr+1]; ··· 177 180 doffset -= 4; 178 181 } 179 182 if (doffset > 3) { 183 + __be32 daddr = fib_compute_spec_dst(skb); 184 + 180 185 memcpy(&start[doffset-1], &daddr, 4); 181 186 dopt->faddr = faddr; 182 187 dptr[0] = start[0];