aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_ipv4.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2015-10-02 14:43:28 -0400
committerDavid S. Miller <davem@davemloft.net>2015-10-03 07:32:38 -0400
commitba8e275a457397ab06f3567cf7bef0d78a43ae7e (patch)
treeb23c8ea809c70a80e3f1fa0ef9935e8600d739ff /net/ipv4/tcp_ipv4.c
parentb267cdd1075d28501b7c05c7aeb8466775505e8d (diff)
tcp: cleanup tcp_v[46]_inbound_md5_hash()
We'll soon have to call tcp_v[46]_inbound_md5_hash() twice. Also add const attribute to the socket, as it might be the unlocked listener for SYN packets. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
-rw-r--r--net/ipv4/tcp_ipv4.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 2fb0945b9d83..56f8c6395966 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1112,10 +1112,13 @@ clear_hash_noput:
1112} 1112}
1113EXPORT_SYMBOL(tcp_v4_md5_hash_skb); 1113EXPORT_SYMBOL(tcp_v4_md5_hash_skb);
1114 1114
1115#endif
1116
1115/* Called with rcu_read_lock() */ 1117/* Called with rcu_read_lock() */
1116static bool tcp_v4_inbound_md5_hash(struct sock *sk, 1118static bool tcp_v4_inbound_md5_hash(const struct sock *sk,
1117 const struct sk_buff *skb) 1119 const struct sk_buff *skb)
1118{ 1120{
1121#ifdef CONFIG_TCP_MD5SIG
1119 /* 1122 /*
1120 * This gets called for each TCP segment that arrives 1123 * This gets called for each TCP segment that arrives
1121 * so we want to be efficient. 1124 * so we want to be efficient.
@@ -1165,8 +1168,9 @@ static bool tcp_v4_inbound_md5_hash(struct sock *sk,
1165 return true; 1168 return true;
1166 } 1169 }
1167 return false; 1170 return false;
1168}
1169#endif 1171#endif
1172 return false;
1173}
1170 1174
1171static void tcp_v4_init_req(struct request_sock *req, 1175static void tcp_v4_init_req(struct request_sock *req,
1172 const struct sock *sk_listener, 1176 const struct sock *sk_listener,
@@ -1607,16 +1611,8 @@ process:
1607 if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb)) 1611 if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb))
1608 goto discard_and_relse; 1612 goto discard_and_relse;
1609 1613
1610#ifdef CONFIG_TCP_MD5SIG
1611 /*
1612 * We really want to reject the packet as early as possible
1613 * if:
1614 * o We're expecting an MD5'd packet and this is no MD5 tcp option
1615 * o There is an MD5 option and we're not expecting one
1616 */
1617 if (tcp_v4_inbound_md5_hash(sk, skb)) 1614 if (tcp_v4_inbound_md5_hash(sk, skb))
1618 goto discard_and_relse; 1615 goto discard_and_relse;
1619#endif
1620 1616
1621 nf_reset(skb); 1617 nf_reset(skb);
1622 1618