Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp2399358rwb; Fri, 20 Jan 2023 02:22:08 -0800 (PST) X-Google-Smtp-Source: AMrXdXtUqCjDjnk9yqP/XH6ogXHRFooSrTmWifa1tcGAs0ddO02ZcSMptIiCxXAuzsWbd/Q7miAr X-Received: by 2002:a05:6a20:1914:b0:b1:a867:79ca with SMTP id bv20-20020a056a20191400b000b1a86779camr12997870pzb.10.1674210128336; Fri, 20 Jan 2023 02:22:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674210128; cv=none; d=google.com; s=arc-20160816; b=ioRID3Zp5E26/76iSrfA+Dil8JLDZBiABRZvYOR0CZscdh6qxemSoSUnkmlLCv2K1Z MnlKsXOn6cGsPUZmKUVNl/4MwBkfCgkqQiNFDbgNYxODblBRktEX41rz0lJE4Za5dxX3 ffSCx/bC+XdSphXwCRiVfbZEHp7VI+tuPD6s3pCCeJbrclq4n5imYu+dr6JpUskzYDGf IJrh4eiSdIEbSf6lxdyhcYIlijZEXVWwB6n8xh575ElZQ1T1/lvxGS/OYJ7qbgm+V33Z +OVyNGorHPxV77/pnsPH/jBQPIUEpww9ZKcaS2DMIMXM3Iz7sC7U012HMbpvOMq3FtVN Kvbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=20GKXuBpuwSve265I0TGzMShxeaSHGqGmE2FwuVHDoU=; b=SogfsLX9Dbe+J3+OlyAiGUBGdr+AQNLW8wtWGBPzQEsOvR4qfxXLVHAQicyNWmv0lb 7k8ALNKdD5i7ii4QpBXR9s7br1koIVQF8Bgg6EbKzt303XgHSaixriXk0ZfNszzjWjYN WDS/8XhfXR9lY1AUF35397T8o6zpLAQqnoFBuEtePTbOWRO+mKbGvtrQvoPodERBHkJ3 o5qvB6fX+E+a18pr2fZWgrbhgw33u7LNV5E/yvJfj4z0YgMNF1EjBA1acmuiWwkKSTrF gr7dP5xTMOy6Mhq61LMx5a93ex3goUBwSO6msq3wzmz8WPfAzmoivLgOqWDBwGtYBI1K +feg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 84-20020a630057000000b0047903323b58si19182160pga.798.2023.01.20.02.21.54; Fri, 20 Jan 2023 02:22:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-crypto-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; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229696AbjATKVx (ORCPT + 99 others); Fri, 20 Jan 2023 05:21:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229678AbjATKVw (ORCPT ); Fri, 20 Jan 2023 05:21:52 -0500 Received: from formenos.hmeau.com (helcar.hmeau.com [216.24.177.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8DC364617D; Fri, 20 Jan 2023 02:21:51 -0800 (PST) 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 1pIoWd-002BGR-8C; Fri, 20 Jan 2023 18:21:36 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Fri, 20 Jan 2023 18:21:35 +0800 Date: Fri, 20 Jan 2023 18:21:35 +0800 From: Herbert Xu To: Linus Walleij Cc: "David S. Miller" , Rob Herring , Krzysztof Kozlowski , Maxime Coquelin , Alexandre Torgue , Lionel Debieve , linux-crypto@vger.kernel.org, devicetree@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 5/6] crypto: stm32/hash: Support Ux500 hash Message-ID: References: <20221227-ux500-stm32-hash-v2-0-bc443bc44ca4@linaro.org> <20221227-ux500-stm32-hash-v2-5-bc443bc44ca4@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20221227-ux500-stm32-hash-v2-5-bc443bc44ca4@linaro.org> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, 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-crypto@vger.kernel.org On Tue, Jan 10, 2023 at 08:19:16PM +0100, Linus Walleij wrote: > > +static void stm32_hash_emptymsg_fallback(struct ahash_request *req) > +{ > + struct crypto_ahash *ahash = crypto_ahash_reqtfm(req); > + struct stm32_hash_ctx *ctx = crypto_ahash_ctx(ahash); > + struct stm32_hash_request_ctx *rctx = ahash_request_ctx(req); > + struct stm32_hash_dev *hdev = rctx->hdev; > + struct crypto_shash *xtfm; > + struct shash_desc *sdesc; > + size_t len; > + int ret; > + > + dev_dbg(hdev->dev, "use fallback message size 0 key size %d\n", > + ctx->keylen); > + xtfm = crypto_alloc_shash(crypto_ahash_alg_name(ahash), > + 0, CRYPTO_ALG_NEED_FALLBACK); > + if (IS_ERR(xtfm)) { > + dev_err(hdev->dev, "failed to allocate synchronous fallback\n"); > + return; > + } > + > + len = sizeof(*sdesc) + crypto_shash_descsize(xtfm); > + sdesc = kmalloc(len, GFP_KERNEL); > + if (!sdesc) > + goto err_hashkey_sdesc; > + sdesc->tfm = xtfm; > + > + if (ctx->keylen) { > + ret = crypto_shash_setkey(xtfm, ctx->key, ctx->keylen); > + if (ret) { > + dev_err(hdev->dev, "failed to set key ret=%d\n", ret); > + goto err_hashkey; > + } > + } > + > + ret = crypto_shash_init(sdesc); > + if (ret) { > + dev_err(hdev->dev, "shash init error ret=%d\n", ret); > + goto err_hashkey; > + } > + > + ret = crypto_shash_finup(sdesc, NULL, 0, rctx->digest); > + if (ret) > + dev_err(hdev->dev, "shash finup error\n"); > +err_hashkey: > + kfree(sdesc); > +err_hashkey_sdesc: > + crypto_free_shash(xtfm); > +} Calling crypto_alloc_shash is not allowed in this context. For example, we might have been called down from the block layer due to swapping. Even if you intermediate this with kernel threads, it still doesn't change the nature of the dead-lock. So if you need a fallback for zero-length messages, just allocate it unconditionally in the init_tfm function. Cheers, -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt