From: Eric Biggers <ebiggers@kernel.org>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "kernel test robot" <oliver.sang@intel.com>,
oe-lkp@lists.linux.dev, lkp@intel.com,
linux-crypto@vger.kernel.org, ltp@lists.linux.it,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Russell King (Oracle)" <linux@armlinux.org.uk>,
"Horia Geantă" <horia.geanta@nxp.com>,
"Ard Biesheuvel" <ardb@kernel.org>,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH] crypto: api - Fix generic algorithm self-test races
Date: Sat, 5 Oct 2024 15:24:48 -0700 [thread overview]
Message-ID: <20241005222448.GB10813@sol.localdomain> (raw)
In-Reply-To: <ZtZFOgh3WylktM1E@gondor.apana.org.au>
On Tue, Sep 03, 2024 at 07:07:38AM +0800, Herbert Xu wrote:
> On Mon, Sep 02, 2024 at 10:05:54AM -0700, Eric Biggers wrote:
> >
> > With both this patch "crypto: api - Fix generic algorithm self-test races" and
> > your other patch "crypto: algboss - Pass instance creation error up" applied,
> > I'm still getting errors occasionally, e.g.:
> >
> > [ 5.155587] alg: skcipher: failed to allocate transform for cbc(sm4-generic): -2
> > [ 5.155954] alg: self-tests for cbc(sm4) using cbc(sm4-generic) failed (rc=-2)
> > [ 5.372511] alg: aead: failed to allocate transform for gcm_base(ctr(aes-generic),ghash-generic): -2
> > [ 5.372861] alg: self-tests for gcm(aes) using gcm_base(ctr(aes-generic),ghash-generic) failed (rc=-2)
> >
> > I can't follow your explanation of what is going on here and what the fix is.
> > Would it make any sense to just revert the commits that introduced this problem?
>
> As I said earlier, these errors are expected. What's happening
> is this:
>
> __ecb-sm4-aesni-avx gets registered (but not tested)
>
> cbc(sm4-generic) gets registered (but not tested)
>
> __ecb-sm4-aesni-avx finishes testing
> with lskcipher this is equivalent to crypto_cipher sm4
> so it triggers the destruction of all instances of sm4
>
> cbc(sm4-generic) gets marked as dead
>
> cbc(sm4-generic) fails self-test because it's already dead (ENOENT)
>
> It's harmless because whatever that is asking for cbc(sm4-generic)
> (in this case it's the extra-test mechanism) will simply retry the
> allocation which will then succeed.
>
> I will send a patch to disable the warning when allocating X returns
> ENOENT while we're testing X itself. This can always happen if X
> gets killed for the reason mentioned above and it's perfectly harmless.
>
> It's just that the race window was tiny previously because testing
> occurred immediately after registration. But now we've magnified
> that window many times with asynchronous testing.
>
The tests are still failing on upstream:
[ 0.343845] alg: self-tests for rfc4106(gcm(aes)) using rfc4106(gcm_base(ctr(aes-generic),ghash-generic)) failed (rc=-2)
To me it still seems like commit 37da5d0ffa7b ("crypto: api - Do not wait for
tests during registration") is just broken and should be reverted.
Besides the test failures, it looks like there's no longer any guarantee that
algorithms are actually available now that their module is loaded.
E.g. consider if someone does 'modprobe aesni-intel' and then immediately
creates a dm-crypt device. Now it sounds like the AES-NI algorithms might not
have finished being tested yet and the generic algorithms can be used instead,
resulting in a performance regression.
I understand that you want to try to fix the edge cases in "fallback" ciphers.
But "fallback" ciphers have always seemed like a bad design due to how they use
the crypto API recursively. I think the algorithms that use them should
generally be migrated off of them, e.g. as I did in commit f235bc11cc95
("crypto: arm/aes-neonbs - go back to using aes-arm directly"). That fixed the
problem in aes-neonbs that seems to have triggered this work in the first place.
- Eric
next prev parent reply other threads:[~2024-10-05 22:24 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-05 21:42 [BUG] More issues with arm/aes-neonbs Russell King (Oracle)
2024-08-06 10:35 ` Herbert Xu
2024-08-08 6:17 ` Herbert Xu
2024-08-08 17:14 ` Linus Torvalds
2024-08-08 18:35 ` Linus Torvalds
2024-08-08 19:54 ` Linus Torvalds
2024-08-09 4:40 ` Herbert Xu
2024-08-09 5:19 ` Linus Torvalds
2024-08-09 16:25 ` Linus Torvalds
2024-08-09 7:50 ` Russell King (Oracle)
2024-08-10 2:41 ` [PATCH 1/3] crypto: api - Remove instance larval fulfilment Herbert Xu
2024-08-16 8:45 ` kernel test robot
2024-08-17 6:56 ` [v3 PATCH " Herbert Xu
2024-08-17 6:57 ` [v3 PATCH 2/3] crypto: api - Do not wait for tests during registration Herbert Xu
2024-08-17 6:58 ` [v3 PATCH 3/3] crypto: simd - Do not call crypto_alloc_tfm " Herbert Xu
2024-08-27 18:48 ` Eric Biggers
2024-08-28 2:59 ` Herbert Xu
2024-08-30 17:51 ` Eric Biggers
2024-09-01 8:05 ` [PATCH] crypto: api - Fix generic algorithm self-test races Herbert Xu
2024-09-02 17:05 ` Eric Biggers
2024-09-02 23:07 ` Herbert Xu
2024-10-05 22:24 ` Eric Biggers [this message]
2024-10-06 0:53 ` Herbert Xu
2024-10-06 3:06 ` Eric Biggers
2024-10-07 4:32 ` Herbert Xu
2024-10-07 7:58 ` Herbert Xu
2024-10-07 8:31 ` Herbert Xu
2024-08-10 2:42 ` [PATCH 2/3] crypto: api - Do not wait for tests during registration Herbert Xu
2024-08-11 13:30 ` Dan Carpenter
2024-08-12 10:33 ` Herbert Xu
2024-08-12 10:34 ` [v2 PATCH 1/3] crypto: api - Remove instance larval fulfilment Herbert Xu
2024-08-12 10:35 ` [v2 PATCH 2/3] crypto: api - Do not wait for tests during registration Herbert Xu
2024-08-12 10:36 ` [v2 PATCH 3/3] crypto: simd - Do not call crypto_alloc_tfm " Herbert Xu
2024-08-10 2:43 ` [PATCH " Herbert Xu
2024-08-09 18:27 ` [BUG] More issues with arm/aes-neonbs Eric Biggers
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=20241005222448.GB10813@sol.localdomain \
--to=ebiggers@kernel.org \
--cc=ardb@kernel.org \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=horia.geanta@nxp.com \
--cc=linux-crypto@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=lkp@intel.com \
--cc=ltp@lists.linux.it \
--cc=oe-lkp@lists.linux.dev \
--cc=oliver.sang@intel.com \
--cc=torvalds@linux-foundation.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