Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9a7030b7 authored by John Dykstra's avatar John Dykstra Committed by David S. Miller
Browse files

tcp: Remove redundant copy of MD5 authentication key



Remove the copy of the MD5 authentication key from tcp_check_req().
This key has already been copied by tcp_v4_syn_recv_sock() or
tcp_v6_syn_recv_sock().

Signed-off-by: default avatarJohn Dykstra <john.dykstra1@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fd3ae5e8
Loading
Loading
Loading
Loading
+0 −23
Original line number Diff line number Diff line
@@ -657,29 +657,6 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
	child = inet_csk(sk)->icsk_af_ops->syn_recv_sock(sk, skb, req, NULL);
	if (child == NULL)
		goto listen_overflow;
#ifdef CONFIG_TCP_MD5SIG
	else {
		/* Copy over the MD5 key from the original socket */
		struct tcp_md5sig_key *key;
		struct tcp_sock *tp = tcp_sk(sk);
		key = tp->af_specific->md5_lookup(sk, child);
		if (key != NULL) {
			/*
			 * We're using one, so create a matching key on the
			 * newsk structure. If we fail to get memory then we
			 * end up not copying the key across. Shucks.
			 */
			char *newkey = kmemdup(key->key, key->keylen,
					       GFP_ATOMIC);
			if (newkey) {
				if (!tcp_alloc_md5sig_pool())
					BUG();
				tp->af_specific->md5_add(child, child, newkey,
							 key->keylen);
			}
		}
	}
#endif

	inet_csk_reqsk_queue_unlink(sk, req, prev);
	inet_csk_reqsk_queue_removed(sk, req);