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

ipv4: clean up cookie_v4_check()

We can retrieve opt from skb, no need to pass it as a parameter.
And opt should always be non-NULL, no need to check.

Cc: Krzysztof Kolasa <kkolasa@winsoft.pl>
Cc: Eric Dumazet <edumazet@google.com>
Tested-by: Krzysztof Kolasa <kkolasa@winsoft.pl>
Signed-off-by: Cong Wang <cwang@twopensource.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Cong Wang and committed by
David S. Miller
461b74c3 e25f866f

+6 -7
+2 -3
include/net/tcp.h
··· 468 468 /* From syncookies.c */ 469 469 int __cookie_v4_check(const struct iphdr *iph, const struct tcphdr *th, 470 470 u32 cookie); 471 - struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb, 472 - struct ip_options *opt); 471 + struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb); 473 472 #ifdef CONFIG_SYN_COOKIES 474 473 475 474 /* Syncookies use a monotonic timer which increments every 60 seconds. ··· 1673 1674 const struct ip_options *opt = &TCP_SKB_CB(skb)->header.h4.opt; 1674 1675 struct ip_options_rcu *dopt = NULL; 1675 1676 1676 - if (opt && opt->optlen) { 1677 + if (opt->optlen) { 1677 1678 int opt_size = sizeof(*dopt) + opt->optlen; 1678 1679 1679 1680 dopt = kmalloc(opt_size, GFP_ATOMIC);
+3 -3
net/ipv4/syncookies.c
··· 255 255 } 256 256 EXPORT_SYMBOL(cookie_check_timestamp); 257 257 258 - struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb, 259 - struct ip_options *opt) 258 + struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb) 260 259 { 260 + struct ip_options *opt = &TCP_SKB_CB(skb)->header.h4.opt; 261 261 struct tcp_options_received tcp_opt; 262 262 struct inet_request_sock *ireq; 263 263 struct tcp_request_sock *treq; ··· 336 336 flowi4_init_output(&fl4, sk->sk_bound_dev_if, ireq->ir_mark, 337 337 RT_CONN_FLAGS(sk), RT_SCOPE_UNIVERSE, IPPROTO_TCP, 338 338 inet_sk_flowi_flags(sk), 339 - (opt && opt->srr) ? opt->faddr : ireq->ir_rmt_addr, 339 + opt->srr ? opt->faddr : ireq->ir_rmt_addr, 340 340 ireq->ir_loc_addr, th->source, th->dest); 341 341 security_req_classify_flow(req, flowi4_to_flowi(&fl4)); 342 342 rt = ip_route_output_key(sock_net(sk), &fl4);
+1 -1
net/ipv4/tcp_ipv4.c
··· 1408 1408 1409 1409 #ifdef CONFIG_SYN_COOKIES 1410 1410 if (!th->syn) 1411 - sk = cookie_v4_check(sk, skb, &TCP_SKB_CB(skb)->header.h4.opt); 1411 + sk = cookie_v4_check(sk, skb); 1412 1412 #endif 1413 1413 return sk; 1414 1414 }