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 BBA9BC77B7A for ; Thu, 20 Apr 2023 10:14:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233687AbjDTKOL (ORCPT ); Thu, 20 Apr 2023 06:14:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54806 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232726AbjDTKNW (ORCPT ); Thu, 20 Apr 2023 06:13:22 -0400 Received: from 167-179-156-38.a7b39c.syd.nbn.aussiebb.net (167-179-156-38.a7b39c.syd.nbn.aussiebb.net [167.179.156.38]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0BCF446A1; Thu, 20 Apr 2023 03:11:08 -0700 (PDT) Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.94.2 #2 (Debian)) id 1ppRF8-000YMk-Qu; Thu, 20 Apr 2023 18:10:25 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Thu, 20 Apr 2023 18:10:23 +0800 Date: Thu, 20 Apr 2023 18:10:23 +0800 From: Herbert Xu To: Jia Jie Ho Cc: "David S . Miller" , Rob Herring , Krzysztof Kozlowski , Palmer Dabbelt , Emil Renner Berthing , Conor Dooley , linux-crypto@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Subject: Re: [PATCH v5 4/4] crypto: starfive - Add hash and HMAC support Message-ID: References: <20230411081424.131912-1-jiajie.ho@starfivetech.com> <20230411081424.131912-5-jiajie.ho@starfivetech.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230411081424.131912-5-jiajie.ho@starfivetech.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Apr 11, 2023 at 04:14:24PM +0800, Jia Jie Ho wrote: > > +static int starfive_hash_export(struct ahash_request *req, void *out) > +{ > + struct starfive_cryp_request_ctx *rctx = ahash_request_ctx(req); > + struct crypto_ahash *tfm = crypto_ahash_reqtfm(req); > + struct starfive_cryp_ctx *ctx = crypto_ahash_ctx(tfm); > + > + ahash_request_set_tfm(&rctx->ahash_fbk_req, ctx->ahash_fbk); > + ahash_request_set_callback(&rctx->ahash_fbk_req, > + req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP, > + req->base.complete, req->base.data); > + > + ahash_request_set_crypt(&rctx->ahash_fbk_req, req->src, > + req->result, req->nbytes); > + > + return crypto_ahash_export(&rctx->ahash_fbk_req, out); > +} You can't export a freshly created request. The fallback request needs to have been created by the usual init/update calls. The export function should simply invoke export. > +static int starfive_hash_cra_init_algs(struct crypto_tfm *tfm, > + const char *algs_hmac_name, > + unsigned int mode, > + const char *alg_name) > +{ > + struct starfive_cryp_ctx *ctx = crypto_tfm_ctx(tfm); > + struct crypto_ahash *ahash = __crypto_ahash_cast(tfm); > + > + ctx->cryp = starfive_cryp_find_dev(ctx); > + > + if (!ctx->cryp) > + return -ENODEV; > + > + ctx->ahash_fbk = crypto_alloc_ahash(alg_name, 0, > + CRYPTO_ALG_NEED_FALLBACK); > + > + if (IS_ERR(ctx->ahash_fbk)) > + return dev_err_probe(ctx->cryp->dev, PTR_ERR(ctx->ahash_fbk), > + "starfive_hash: Could not load fallback driver.\n"); > + > + crypto_hash_alg_common(ahash)->statesize = crypto_ahash_statesize(ctx->ahash_fbk); I've just posted a patch to linux-crypto to do this properly: https://lore.kernel.org/linux-crypto/ZEEOXIHwqKblKfBJ@gondor.apana.org.au/T/#u Please switch to using the helper that I added. > +static int starfive_hash256_setkey(struct crypto_ahash *tfm, > + const u8 *key, unsigned int keylen) > +{ > + struct starfive_cryp_ctx *ctx = crypto_ahash_ctx(tfm); > + unsigned int digestsize = crypto_ahash_digestsize(tfm); > + unsigned int blocksize; > + int ret = 0; > + > + blocksize = crypto_tfm_alg_blocksize(crypto_ahash_tfm(tfm)); Please use crypto_ahash_blocksize. We should never use crypto_ahash_tfm in new code. > +static int starfive_hash_cra_sha224_init(struct crypto_tfm *tfm) > +{ > + return starfive_hash_cra_init_algs(tfm, NULL, > + STARFIVE_HASH_SHA224, > + "sha224-generic"); > +} Please switch to the new API and use init_tfm/exit_tfm instead of cra_init/cra_exit. Thanks, -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt