From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3F956C43334 for ; Mon, 18 Jul 2022 19:48:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236347AbiGRTss (ORCPT ); Mon, 18 Jul 2022 15:48:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229639AbiGRTsp (ORCPT ); Mon, 18 Jul 2022 15:48:45 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B432132044 for ; Mon, 18 Jul 2022 12:48:35 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 62883B81747 for ; Mon, 18 Jul 2022 19:48:34 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E1F81C341CA; Mon, 18 Jul 2022 19:48:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1658173713; bh=0FcDwUDhaK+mDR5IhVl6HF0euAJL94ZIKk7+BQwJDZE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GClkveto2ENLNzZ0QjS+4lbGi/ESpgr/ECfVtbxOhOUl8yOYjr2UJBI6xzIEIHFJG MjVx5DYAhwt47g/9yEYnNes4fBrEBoDZXtbj1z4AwcQx5o4lZor2avT+UGJoPmSk9v ar/cCLQRhfkc3f2kcNrMUOuSR8VllO52xOfaF+LG7pAyNtuMmuhPuzycHS4XtrykKY aYBglHWetNqZPEPh7MHxLX4ABVWWECxphaQ6m7hSi2B1om9JM1PKtsbma9PB3kxd0B a2KFNzOIbYULJY/Cr9jA7fYiyMTjuwEpb8HFNa1QBHhknMiALyUimxSg8+OQTvsS3/ FtYGG84Qz98Bg== From: Jakub Kicinski To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com, borisp@nvidia.com, john.fastabend@gmail.com, maximmi@nvidia.com, tariqt@nvidia.com, vfedorenko@novek.ru, Jakub Kicinski Subject: [PATCH net-next 6/7] tls: rx: device: add input CoW helper Date: Mon, 18 Jul 2022 12:48:10 -0700 Message-Id: <20220718194811.1728061-7-kuba@kernel.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220718194811.1728061-1-kuba@kernel.org> References: <20220718194811.1728061-1-kuba@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Wrap the remaining skb_cow_data() into a helper, so it's easier to replace down the lane. The new version will change the skb so make sure relevant pointers get reloaded after the call. Signed-off-by: Jakub Kicinski --- CC: borisp@nvidia.com CC: john.fastabend@gmail.com --- net/tls/tls.h | 1 + net/tls/tls_device.c | 19 +++++++++---------- net/tls/tls_strp.c | 11 +++++++++++ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/net/tls/tls.h b/net/tls/tls.h index 78c5d699bf75..154a3773e785 100644 --- a/net/tls/tls.h +++ b/net/tls/tls.h @@ -127,6 +127,7 @@ int tls_sw_fallback_init(struct sock *sk, struct tls_offload_context_tx *offload_ctx, struct tls_crypto_info *crypto_info); +int tls_strp_msg_cow(struct tls_sw_context_rx *ctx); struct sk_buff *tls_strp_msg_detach(struct tls_sw_context_rx *ctx); int tls_strp_msg_hold(struct sock *sk, struct sk_buff *skb, struct sk_buff_head *dst); diff --git a/net/tls/tls_device.c b/net/tls/tls_device.c index 6abbe3c2520c..3c204a25a377 100644 --- a/net/tls/tls_device.c +++ b/net/tls/tls_device.c @@ -892,27 +892,26 @@ static void tls_device_core_ctrl_rx_resync(struct tls_context *tls_ctx, static int tls_device_reencrypt(struct sock *sk, struct tls_sw_context_rx *sw_ctx) { - int err = 0, offset, copy, nsg, data_len, pos; - struct sk_buff *skb, *skb_iter, *unused; + int err, offset, copy, data_len, pos; + struct sk_buff *skb, *skb_iter; struct scatterlist sg[1]; struct strp_msg *rxm; char *orig_buf, *buf; - skb = tls_strp_msg(sw_ctx); - rxm = strp_msg(skb); - offset = rxm->offset; - + rxm = strp_msg(tls_strp_msg(sw_ctx)); orig_buf = kmalloc(rxm->full_len + TLS_HEADER_SIZE + TLS_CIPHER_AES_GCM_128_IV_SIZE, sk->sk_allocation); if (!orig_buf) return -ENOMEM; buf = orig_buf; - nsg = skb_cow_data(skb, 0, &unused); - if (unlikely(nsg < 0)) { - err = nsg; + err = tls_strp_msg_cow(sw_ctx); + if (unlikely(err)) goto free_buf; - } + + skb = tls_strp_msg(sw_ctx); + rxm = strp_msg(skb); + offset = rxm->offset; sg_init_table(sg, 1); sg_set_buf(&sg[0], buf, diff --git a/net/tls/tls_strp.c b/net/tls/tls_strp.c index 40b177366121..d9bb4f23f01a 100644 --- a/net/tls/tls_strp.c +++ b/net/tls/tls_strp.c @@ -13,6 +13,17 @@ struct sk_buff *tls_strp_msg_detach(struct tls_sw_context_rx *ctx) return skb; } +int tls_strp_msg_cow(struct tls_sw_context_rx *ctx) +{ + struct sk_buff *unused; + int nsg; + + nsg = skb_cow_data(ctx->recv_pkt, 0, &unused); + if (nsg < 0) + return nsg; + return 0; +} + int tls_strp_msg_hold(struct sock *sk, struct sk_buff *skb, struct sk_buff_head *dst) { -- 2.36.1