From patchwork Thu Feb 1 00:07:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Paasch X-Patchwork-Id: 868107 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=apple.com header.i=@apple.com header.b="U84NXnYk"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zX0nL6jDpz9s7M for ; Thu, 1 Feb 2018 11:08:06 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754753AbeBAAIE (ORCPT ); Wed, 31 Jan 2018 19:08:04 -0500 Received: from mail-out4.apple.com ([17.151.62.26]:62940 "EHLO mail-in4.apple.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754310AbeBAAHd (ORCPT ); Wed, 31 Jan 2018 19:07:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; d=apple.com; s=mailout2048s; c=relaxed/simple; q=dns/txt; i=@apple.com; t=1517443652; x=2381357252; h=From:Sender:Reply-To:Subject:Date:Message-id:To:Cc:MIME-Version:Content-Type: Content-transfer-encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-reply-to:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=qqTp/6KLL7+/RAMv0Y0LXOpiSs13RK8NPDOyjrkil+0=; b=U84NXnYkErQn/ZkShU2k65t7+5OQKj06uSjyXffp+gZh+Ja2/wt1u9tbITlOi+ee 8TmOimuurdmduu1Ijy5Yfxv0ovduKTkQvf4/Pna1Wkujks7AqbLp4ATtAOoQS+8a NCmlAdmArC2dbEz93xNLDhYNGgbhoYg5D7nDZ1yP0PKSy9MZZdbTsQweCpLENlnA qGMdSuSOxFQw2XG8xB6We33o/ELo86enmuPd/JcArE0pusU7z2oucCDKlOv+wOPn kvYymSIJO0Rm/9H8nW5r3eQDDJnXEAQBVYHIEtg/L7LktOkL1I4NrHuwpwj3Qpjb 8d9wyIcHcpZ5qLJki/LVjQ==; Received: from relay3.apple.com (relay3.apple.com [17.128.113.83]) (using TLS with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mail-in4.apple.com (Apple Secure Mail Relay) with SMTP id 28.8A.10621.44A527A5; Wed, 31 Jan 2018 16:07:32 -0800 (PST) X-AuditID: 11973e12-c67d59e00000297d-69-5a725a44ce56 Received: from nwk-mmpp-sz13.apple.com (nwk-mmpp-sz13.apple.com [17.128.115.216]) by relay3.apple.com (Apple SCV relay) with SMTP id 7F.7C.12852.44A527A5; Wed, 31 Jan 2018 16:07:32 -0800 (PST) Content-transfer-encoding: 7BIT Received: from localhost ([17.226.23.225]) by nwk-mmpp-sz13.apple.com (Oracle Communications Messaging Server 8.0.2.1.20180104 64bit (built Jan 4 2018)) with ESMTPSA id <0P3G006DY30K15B0@nwk-mmpp-sz13.apple.com>; Wed, 31 Jan 2018 16:07:32 -0800 (PST) From: Christoph Paasch To: netdev@vger.kernel.org Cc: Eric Dumazet , Mat Martineau , Ivan Delalande Subject: [RFC v2 08/14] tcp_md5: Detect key inside tcp_v4_send_ack instead of passing it as an argument Date: Wed, 31 Jan 2018 16:07:10 -0800 Message-id: <20180201000716.69301-9-cpaasch@apple.com> X-Mailer: git-send-email 2.16.1 In-reply-to: <20180201000716.69301-1-cpaasch@apple.com> References: <20180201000716.69301-1-cpaasch@apple.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprJLMWRmVeSWpSXmKPExsUi2FAYrOsSVRRlsKFL02L33XCLp8cesVv8 belnsTi2QMyBxWP39CZGjwWbSj3mnQz0+LxJLoAlissmJTUnsyy1SN8ugSuj7+AS5oIvQhXP Ny5nbWCcyd/FyMkhIWAisfriFVYQW0hgNZPE9U1ZMPE3u3cCxbmA4ocYJVZO2MfSxcjBwSwg L3HwvCxEfSOTxNMDniC2sICkRPedO8wgNpuAlsTb2+1gM0UEpCQ+7tjODjKHWaCJUeLRwnMs EA2ZEnfm/GMHsVkEVCUWbH8C1sArYCbxce4rdogj5CUOv2kCi3MKmEs07JrDDrHYTOLz9cXM IEMlBE6wSZw9tohtAqPgLIT7FjAyrmIUyk3MzNHNzDPRSywoyEnVS87P3cQICsvpdkI7GE+t sjrEKMDBqMTDO+FCYZQQa2JZcWXuIUZpDhYlcV4v0aIoIYH0xJLU7NTUgtSi+KLSnNTiQ4xM HJxSDYz+p5bUzPHSYZZWXzH5QKpOW6Tu9Z5dJt8Pb5v+qddmXfUrH5ajtjyxk+3tX528dFu7 2cxdhu9mttzhpfdup8Qt6Mgxtm38qPVJu06+qCLL4M5cvb9Pd6+pP7O1wXgxV9DW6rPJfpEn VllOnsJR/vhDnGvgO1s1oS7JlQXMW7VcxWLz/IOYjiqxFGckGmoxFxUnAgD8eEnkLAIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrKLMWRmVeSWpSXmKPExsUi2FB8Q9clqijK4PRFVYvdd8Mtnh57xG7x t6WfxeLYAjEHFo/d05sYPRZsKvWYdzLQ4/MmuQCWKEObtPyi8sSiFIWi5IISW6XijMSU/PJ4 S2MjU4fEgoKcVL3k/FwlfTublNSczLLUIn27BMOMvoNLmAu+CFU837ictYFxJn8XIyeHhICJ xJvdO1m7GLk4hAQOMUqsnLCPpYuRg4NZQF7i4HlZkBohgUYmiacHPEFsYQFJie47d5hBbDYB LYm3t9tZQWwRASmJjzu2s4PMYRZoYpR4tPAcC0RDpsSdOf/YQWwWAVWJBdufgDXwCphJfJz7 ih3iCHmJw2+awOKcAuYSDbvmsEMsNpP4fH0x8wRGvlkIJy1gZFzFKFCUmpNYaawH9+wmRnBY FgbvYPyzzOoQowAHoxIP74QLhVFCrIllxZW5QL9xMCuJ8G4UKYoS4k1JrKxKLcqPLyrNSS0+ xOgDdNtEZinR5HxgzOSVxBsaWxhbmlgYGJhYmpngEFYS5z2iBDRLID2xJDU7NbUgtQhmHBMH p1QD45RIFw+vt8YP9XvZv1jIBC7fEHFA2ONolc6jmtTdR1+2l5ycaH/02/1KpScHu893Tj/M //fNlmfyH7R9difKX25z9dFePvlE9px0rkpb1vm2mg5JHAFpzJ9lFmXv3VejWp/+71bhRd/w WuXP15+X7NweN/Wo0f6O1ewbgiRPVGz4ELrx0CruciUWYLIw1GIuKk4EAGqPnjp4AgAA Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This will simplify to consolidate the TCP_MD5-code into a single place. Cc: Ivan Delalande Signed-off-by: Christoph Paasch Reviewed-by: Mat Martineau --- net/ipv4/tcp_ipv4.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 4112594d04be..4211f8e38ef9 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -764,7 +764,6 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb) static void tcp_v4_send_ack(const struct sock *sk, struct sk_buff *skb, u32 seq, u32 ack, u32 win, u32 tsval, u32 tsecr, int oif, - struct tcp_md5sig_key *key, int reply_flags, u8 tos) { const struct tcphdr *th = tcp_hdr(skb); @@ -773,6 +772,9 @@ static void tcp_v4_send_ack(const struct sock *sk, __be32 opt[(MAX_TCP_OPTION_SPACE >> 2)]; } rep; struct hlist_head *extopt_list = NULL; +#ifdef CONFIG_TCP_MD5SIG + struct tcp_md5sig_key *key; +#endif struct net *net = sock_net(sk); struct ip_reply_arg arg; int offset = 0; @@ -803,6 +805,17 @@ static void tcp_v4_send_ack(const struct sock *sk, rep.th.ack = 1; rep.th.window = htons(win); +#ifdef CONFIG_TCP_MD5SIG + if (sk->sk_state == TCP_TIME_WAIT) { + key = tcp_twsk_md5_key(tcp_twsk(sk)); + } else if (sk->sk_state == TCP_NEW_SYN_RECV) { + key = tcp_md5_do_lookup(sk, (union tcp_md5_addr *)&ip_hdr(skb)->saddr, + AF_INET); + } else { + key = NULL; /* Should not happen */ + } +#endif + if (unlikely(extopt_list && !hlist_empty(extopt_list))) { unsigned int remaining; struct tcp_out_options opts; @@ -872,7 +885,6 @@ static void tcp_v4_timewait_ack(struct sock *sk, struct sk_buff *skb) tcp_time_stamp_raw() + tcptw->tw_ts_offset, tcptw->tw_ts_recent, tw->tw_bound_dev_if, - tcp_twsk_md5_key(tcptw), tw->tw_transparent ? IP_REPLY_ARG_NOSRCCHECK : 0, tw->tw_tos ); @@ -900,8 +912,6 @@ static void tcp_v4_reqsk_send_ack(const struct sock *sk, struct sk_buff *skb, tcp_time_stamp_raw() + tcp_rsk(req)->ts_off, req->ts_recent, 0, - tcp_md5_do_lookup(sk, (union tcp_md5_addr *)&ip_hdr(skb)->saddr, - AF_INET), inet_rsk(req)->no_srccheck ? IP_REPLY_ARG_NOSRCCHECK : 0, ip_hdr(skb)->tos); }