From patchwork Tue Jan 10 13:50:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vincent Whitchurch X-Patchwork-Id: 41481 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp2758776wrt; Tue, 10 Jan 2023 05:56:13 -0800 (PST) X-Google-Smtp-Source: AMrXdXvhbQeC9sC+CIseSMabDbpurpcxDek94dBIuO8BenhTf6ZE66kzpWVmwCVeQfHVR4HKKLZr X-Received: by 2002:a17:90b:3c3:b0:225:e9d9:63b2 with SMTP id go3-20020a17090b03c300b00225e9d963b2mr61750673pjb.42.1673358973598; Tue, 10 Jan 2023 05:56:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673358973; cv=none; d=google.com; s=arc-20160816; b=teVXvdG1802clMf+x+7acIi6WixWDHHALUqEUKVnS8R3qh+N83Ur561jEyqggu8pY0 cHnPCS0CMG0Sm/3IleQFHsveN+PUrTgwTY2l+mdAq0XEtY3cYv5KiqyszjGGOftpjSum kg/6CegLKjzbbyXDYooS8kdID/54XvfFvnZSAMqHUzg0cnquPgosWU7Xsb/JZnMHhQQv IKoSMndjpK9nDh9TTE6txiXWkEkz9t/c/0YtRlNoVRWVW755HGzfARlb90chUMLBVwUg rKZS29IaZMJqiap3TF3dbYjYi8mYZxysItd5mjgCsHuDHXa+Mq4uNy+bEAQRIThImJo9 xIiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=imTnDMnDHu3Au0k4Q8/xix4gLYf+kdvkY3vppCY1wrw=; b=uiUMhVTYhTSOzPdSzhWmwx9eRcbnezOdRQ/29BBXhwqNE8KvoW8sRrjCOqOYNEAbDG 7JlHyXa4GDwkVox5TqI5x2okpWM/03dH9tppYCxe7PzXzlcygU2Q5lIriV9eQABoIbrm aKgfxYKPHkCeBED7U9k74Ffso+H36QrPTkp5G/mMFJz/tHSsl2fz9MjF5sdcUQtiqFx4 xFpCOGU8HBAeTul3gcRkShcXKCB7bHxOcjfgKVcANhyrY/KBs+SJIZxujEWzbFw74ZL4 gsJ8P6qz/R4a9Blmbqqp8hg6FrImpFr241jD6/c1jdhCfdN3kUFM3OXtYcBubTWVhH+u u2Rg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@axis.com header.s=axis-central1 header.b=JMjJ0U59; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=axis.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bf14-20020a656d0e000000b004a2e257462bsi13183100pgb.211.2023.01.10.05.56.00; Tue, 10 Jan 2023 05:56:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@axis.com header.s=axis-central1 header.b=JMjJ0U59; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=axis.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238495AbjAJNvd (ORCPT + 99 others); Tue, 10 Jan 2023 08:51:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43940 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238352AbjAJNu7 (ORCPT ); Tue, 10 Jan 2023 08:50:59 -0500 Received: from smtp2.axis.com (smtp2.axis.com [195.60.68.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BF81D14D3D; Tue, 10 Jan 2023 05:50:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; q=dns/txt; s=axis-central1; t=1673358658; x=1704894658; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=imTnDMnDHu3Au0k4Q8/xix4gLYf+kdvkY3vppCY1wrw=; b=JMjJ0U59I01d/2qkjigFdDLuh+Y2aqC0XKc7rcJCis3BR5wiE6Zmx12w FYVThwmkBg9xHoU9QPBK1Ao6fd436ilarcvtpIWUrEJd+ckmjbEdjjj/m Zj5Rz2Ek/nLv9VKi4djITF0I+SinjGLRK8c3eAqVK4aa6hV98GeFgyGx+ h6hfmqpTHQvkTIlNcbpT9BKS/a4WGgpCZy0xyPeAfxZoU1ih14p3dHMFS SnwH67IEMQh0Go2cszGYN/LtgaBJJ6ZLXlkYf68bOfzEwTv1kY2NZk7vM irzArzYfymXEtFhM6yt5PBytSGz7lK7yYfNQjfIxwgoAoRzDVwyMTHLLV Q==; From: Vincent Whitchurch To: , , , CC: , Vincent Whitchurch , , , Lars Persson Subject: [PATCH 01/12] crypto: axis - do not DMA to ahash_request.result Date: Tue, 10 Jan 2023 14:50:31 +0100 Message-ID: <20230110135042.2940847-2-vincent.whitchurch@axis.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230110135042.2940847-1-vincent.whitchurch@axis.com> References: <20230110135042.2940847-1-vincent.whitchurch@axis.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_PASS, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754644059029152308?= X-GMAIL-MSGID: =?utf-8?q?1754644059029152308?= From: Lars Persson The crypto API does not promise that the result pointer is suitable for DMA. Use an intermediate result buffer and let the CPU copy the digest to the ahash_request. Signed-off-by: Lars Persson Signed-off-by: Vincent Whitchurch --- drivers/crypto/axis/artpec6_crypto.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/axis/artpec6_crypto.c b/drivers/crypto/axis/artpec6_crypto.c index 51c66afbe677..87af44ac3e64 100644 --- a/drivers/crypto/axis/artpec6_crypto.c +++ b/drivers/crypto/axis/artpec6_crypto.c @@ -276,6 +276,7 @@ enum artpec6_crypto_hash_flags { HASH_FLAG_FINALIZE = 8, HASH_FLAG_HMAC = 16, HASH_FLAG_UPDATE_KEY = 32, + HASH_FLAG_FINALIZED = 64, }; struct artpec6_crypto_req_common { @@ -1493,12 +1494,15 @@ static int artpec6_crypto_prepare_hash(struct ahash_request *areq) return error; /* Descriptor for the final result */ - error = artpec6_crypto_setup_in_descr(common, areq->result, + error = artpec6_crypto_setup_in_descr(common, + req_ctx->digeststate, digestsize, true); if (error) return error; + req_ctx->hash_flags |= HASH_FLAG_FINALIZED; + } else { /* This is not the final operation for this request */ if (!run_hw) return ARTPEC6_CRYPTO_PREPARE_HASH_NO_START; @@ -2216,6 +2220,14 @@ static void artpec6_crypto_complete_aead(struct crypto_async_request *req) static void artpec6_crypto_complete_hash(struct crypto_async_request *req) { + struct ahash_request *areq = container_of(req, struct ahash_request, base); + struct artpec6_hash_request_context *ctx = ahash_request_ctx(areq); + struct crypto_ahash *ahash = crypto_ahash_reqtfm(areq); + size_t digestsize = crypto_ahash_digestsize(ahash); + + if (ctx->hash_flags & HASH_FLAG_FINALIZED) + memcpy(areq->result, ctx->digeststate, digestsize); + req->complete(req, 0); }