diff options
author | Eric Dumazet <edumazet@google.com> | 2015-10-02 14:43:28 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-03 07:32:38 -0400 |
commit | ba8e275a457397ab06f3567cf7bef0d78a43ae7e (patch) | |
tree | b23c8ea809c70a80e3f1fa0ef9935e8600d739ff /net/ipv4/tcp_ipv4.c | |
parent | b267cdd1075d28501b7c05c7aeb8466775505e8d (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.c | 16 |
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 | } |
1113 | EXPORT_SYMBOL(tcp_v4_md5_hash_skb); | 1113 | EXPORT_SYMBOL(tcp_v4_md5_hash_skb); |
1114 | 1114 | ||
1115 | #endif | ||
1116 | |||
1115 | /* Called with rcu_read_lock() */ | 1117 | /* Called with rcu_read_lock() */ |
1116 | static bool tcp_v4_inbound_md5_hash(struct sock *sk, | 1118 | static 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 | ||
1171 | static void tcp_v4_init_req(struct request_sock *req, | 1175 | static 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 | ||