public inbox for linux-crypto@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Franzki <ifranzki@linux.ibm.com>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Eric Biggers <ebiggers@kernel.org>,
	Harald Freudenberger <freude@linux.ibm.com>,
	Holger Dengler <dengler@linux.ibm.com>,
	linux-crypto@vger.kernel.org
Subject: Re: [PATCH] crypto: api - Redo lookup on EEXIST
Date: Mon, 19 May 2025 15:47:02 +0200	[thread overview]
Message-ID: <d862f12f-8777-445e-a2d2-36484bd0e199@linux.ibm.com> (raw)
In-Reply-To: <aCsIEqVwrhj4UnTq@gondor.apana.org.au>

On 19.05.2025 12:29, Herbert Xu wrote:
> On Mon, May 19, 2025 at 10:09:10AM +0200, Ingo Franzki wrote:
>>
>> During this weekend's CI run, we got the following:
>>
>>     alg: aead: error allocating gcm_base(ctr(aes-generic),ghash-generic) (generic impl of gcm(aes)): -17
>>     alg: self-tests for gcm(aes) using gcm-aes-s390 failed (rc=-17)
>>
>> Last week, we had a similar failure:
>>
>>     aes_s390: Allocating AES fallback algorithm ctr(aes) failed
>>     alg: skcipher: failed to allocate transform for ctr-aes-s390: -17
>>     alg: self-tests for ctr(aes) using ctr-aes-s390 failed (rc=-17)
> 
> Please try this patch:

Since I can't reproduce the problem at will, I can't tell if your patch solves the problem. From what I can tell it looks reasonable. 
Nevertheless, I have added your patch to be applied on top of the next day's next kernel tree in our CI so that it runs with your patch for a while.
Lets run it for a few days and see if the error still shows up or not. 

> 
> ---8<---
> When two crypto algorithm lookups occur at the same time with
> different names for the same algorithm, e.g., ctr(aes-generic)
> and ctr(aes), they will both be instantiated.  However, only one
> of them can be registered.  The second instantiation will fail
> with EEXIST.
> 
> Avoid failing the second lookup by making it retry, but only once
> because there are tricky names such as gcm_base(ctr(aes),ghash)
> that will always fail, despite triggering instantiation and EEXIST.
> 
> Reported-by: Ingo Franzki <ifranzki@linux.ibm.com>
> Fixes: 2825982d9d66 ("[CRYPTO] api: Added event notification")
> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
> 
> diff --git a/crypto/api.c b/crypto/api.c
> index 133d9b626922..5724d62e9d07 100644
> --- a/crypto/api.c
> +++ b/crypto/api.c
> @@ -219,10 +219,19 @@ static struct crypto_alg *crypto_larval_wait(struct crypto_alg *alg,
>  		if (crypto_is_test_larval(larval))
>  			crypto_larval_kill(larval);
>  		alg = ERR_PTR(-ETIMEDOUT);
> -	} else if (!alg) {
> +	} else if (!alg || PTR_ERR(alg) == -EEXIST) {
> +		int err = alg ? -EEXIST : -EAGAIN;
> +
> +		/*
> +		 * EEXIST is expected because two probes can be scheduled
> +		 * at the same time with one using alg_name and the other
> +		 * using driver_name.  Do a re-lookup but do not retry in
> +		 * case we hit a quirk like gcm_base(ctr(aes),...) which
> +		 * will never match.
> +		 */
>  		alg = &larval->alg;
>  		alg = crypto_alg_lookup(alg->cra_name, type, mask) ?:
> -		      ERR_PTR(-EAGAIN);
> +		      ERR_PTR(err);
>  	} else if (IS_ERR(alg))
>  		;
>  	else if (crypto_is_test_larval(larval) &&


-- 
Ingo Franzki
eMail: ifranzki@linux.ibm.com  
Tel: ++49 (0)7031-16-4648
Linux on IBM Z Development, Schoenaicher Str. 220, 71032 Boeblingen, Germany

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM DATA Privacy Statement: https://www.ibm.com/privacy/us/en/

  reply	other threads:[~2025-05-19 13:47 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-19  8:09 Sporadic errors with alg selftest on next kernel Ingo Franzki
2025-05-19  8:28 ` Herbert Xu
2025-05-19  8:34 ` Herbert Xu
2025-05-19  8:43   ` Ingo Franzki
2025-05-19  9:34 ` Herbert Xu
2025-05-19 10:29 ` [PATCH] crypto: api - Redo lookup on EEXIST Herbert Xu
2025-05-19 13:47   ` Ingo Franzki [this message]
2025-05-26  6:44     ` Ingo Franzki
2025-05-26  8:13       ` Herbert Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d862f12f-8777-445e-a2d2-36484bd0e199@linux.ibm.com \
    --to=ifranzki@linux.ibm.com \
    --cc=dengler@linux.ibm.com \
    --cc=ebiggers@kernel.org \
    --cc=freude@linux.ibm.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-crypto@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox