From patchwork Thu Jan 14 05:25:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 1426184 X-Patchwork-Delegate: matthieu.baerts@tessares.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.01.org (client-ip=2001:19d0:306:5::1; helo=ml01.01.org; envelope-from=mptcp-bounces@lists.01.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=Xf1DqPFN; dkim-atps=neutral Received: from ml01.01.org (ml01.01.org [IPv6:2001:19d0:306:5::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DGXnz0wf8z9sVw for ; Thu, 14 Jan 2021 16:25:27 +1100 (AEDT) Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 68E93100EAB41; Wed, 13 Jan 2021 21:25:25 -0800 (PST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=2607:f8b0:4864:20::434; helo=mail-pf1-x434.google.com; envelope-from=geliangtang@gmail.com; receiver= Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 91847100EAB40 for ; Wed, 13 Jan 2021 21:25:23 -0800 (PST) Received: by mail-pf1-x434.google.com with SMTP id q20so2685808pfu.8 for ; Wed, 13 Jan 2021 21:25:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tny0zRwwDLDHHbzcrMtUuz2ApBDZn8WwO2MeyhuyMDA=; b=Xf1DqPFNbGQjw4w4cKrFk0g0rQWwkfdTJt1OqxlviPqnuJQSq2Ne1r0G5UThte0W9o cZ/cKjrGQ8NOFQMGIX1PkqPinEPa9KikST0VSUuGCM0xXlZ33sWs4Ilk5DuB7lbyaRaA Qt6M3lXG8jhfsngtO2AxqZ0CVNhjpR/2k75hjCiL1Ol0Ta3JkR7jNJemJbmJ/gMtJzo+ eIhoCp7khUPieOucnjsNNxh+QJCQ6oQOnhZKtDa7stbdw0CEN3KYpDODmtl3lVGq3gcl iYjAWMrYdCEeTXcMOFDsbPPUoUHFtSxVM9KWdhZrTKEUHR8SlNCg+jkcg3gCwBk5+rUZ IHEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tny0zRwwDLDHHbzcrMtUuz2ApBDZn8WwO2MeyhuyMDA=; b=Grm2Uf8ShNHLL9+cw1ISk0JEgkFRZP/OwjvW1r5idhxgYW++YRSpxVT7/7Sq1+bvIc I7cp2BkbTvJrwwcJ1rV3wKtf8oo/lhs8nn7zOwsWyCITkXmj/JCnasN/pbIQReEgkTDM Sz9EiVWvYl9ZDhK+ocYsJVKPMYDoD1uzlye7Ei9Rn7D9sqloUPKv5yW7/0eXce4H+HPL G7syPOnD+OmYS9yfVnIx2mKYVDExBcliRrngTb9eaPaBjxgp2ElivPM6kHmDcUsdgQuQ O3a6b0tO8Ljs4TXZfC5qKtor55k6zh3XHyNu0RlQzLIHx4vcNa32zqwOco4EsKqo65Ob yHLA== X-Gm-Message-State: AOAM5304Vuo305ywDUZQ2NoSScZh4W7cJQyI1cN9GAC0crjvp5kHwKxn dS2pmRUhX2H2ngjayxKnzVavgpjfa4TBlssX X-Google-Smtp-Source: ABdhPJwkusRfnLSbxK5HZ0FmXSG6xU8eDnZZrmMGbSWPGPDJ64hewRJyjHMqZDpUY4K6BVZr8RmK8w== X-Received: by 2002:a63:7743:: with SMTP id s64mr5568179pgc.215.1610601922770; Wed, 13 Jan 2021 21:25:22 -0800 (PST) Received: from localhost ([43.224.245.180]) by smtp.gmail.com with ESMTPSA id 11sm3871092pgz.22.2021.01.13.21.25.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Jan 2021 21:25:22 -0800 (PST) From: Geliang Tang To: mptcp@lists.01.org Date: Thu, 14 Jan 2021 13:25:00 +0800 Message-Id: <5dc1c547c8e1049b5ea5479bdceb459ee579770e.1610598621.git.geliangtang@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <7a41acee25033aa36629701ff6b0f51cac507a9e.1610598621.git.geliangtang@gmail.com> References: <7a41acee25033aa36629701ff6b0f51cac507a9e.1610598621.git.geliangtang@gmail.com> MIME-Version: 1.0 Message-ID-Hash: D7SO7NAHG4CP3WNC7IQE72EPUW432WLL X-Message-ID-Hash: D7SO7NAHG4CP3WNC7IQE72EPUW432WLL X-MailFrom: geliangtang@gmail.com X-Mailman-Rule-Hits: member-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address CC: Geliang Tang X-Mailman-Version: 3.1.1 Precedence: list Subject: [MPTCP] [MPTCP][PATCH v10 mptcp-next 3/9] mptcp: add a new helper subflow_req_create_thmac List-Id: Discussions regarding MPTCP upstreaming Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: This patch added a new helper named subflow_req_create_thmac, which split from subflow_token_join_request. It initialized subflow_req's local_nonce and thmac fields, those are the more expensive to populate. Signed-off-by: Geliang Tang --- net/mptcp/subflow.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 700a87ee39f1..fee38bb9d80a 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -61,10 +61,23 @@ static bool mptcp_can_accept_new_subflow(const struct mptcp_sock *msk) } /* validate received token and create truncated hmac and nonce for SYN-ACK */ +static void subflow_req_create_thmac(struct mptcp_subflow_request_sock *subflow_req) +{ + struct mptcp_sock *msk = subflow_req->msk; + u8 hmac[SHA256_DIGEST_SIZE]; + + get_random_bytes(&subflow_req->local_nonce, sizeof(u32)); + + subflow_generate_hmac(msk->local_key, msk->remote_key, + subflow_req->local_nonce, + subflow_req->remote_nonce, hmac); + + subflow_req->thmac = get_unaligned_be64(hmac); +} + static struct mptcp_sock *subflow_token_join_request(struct request_sock *req) { struct mptcp_subflow_request_sock *subflow_req = mptcp_subflow_rsk(req); - u8 hmac[SHA256_DIGEST_SIZE]; struct mptcp_sock *msk; int local_id; @@ -81,13 +94,6 @@ static struct mptcp_sock *subflow_token_join_request(struct request_sock *req) } subflow_req->local_id = local_id; - get_random_bytes(&subflow_req->local_nonce, sizeof(u32)); - - subflow_generate_hmac(msk->local_key, msk->remote_key, - subflow_req->local_nonce, - subflow_req->remote_nonce, hmac); - - subflow_req->thmac = get_unaligned_be64(hmac); return msk; } @@ -183,6 +189,8 @@ static int subflow_init_req(struct request_sock *req, if (!subflow_req->msk) return -EPERM; + subflow_req_create_thmac(subflow_req); + if (unlikely(req->syncookie)) { if (mptcp_can_accept_new_subflow(subflow_req->msk)) subflow_init_req_cookie_join_save(subflow_req, skb);