Re: [PATCH] crypto: tegra - Add missing CRYPTO_ALG_ASYNC
Zorro Lang <[email protected]> Sun, 15 Mar 2026 23:55:10 +0800
| Newsgroups | org.kernel.vger.linux-fscrypt,org.kernel.vger.linux-crypto,org.kernel.vger.linux-ext4,org.kernel.vger.stable |
|---|---|
| Message-ID | <20260315155510.myp3i7jhzs654zr2@doltdoltdolt> |
On Sat, Mar 14, 2026 at 09:55:15AM -0700, Eric Biggers wrote: > The tegra crypto driver failed to set the CRYPTO_ALG_ASYNC on its > asynchronous algorithms, causing the crypto API to select them for users > that request only synchronous algorithms. This causes crashes (at > least). Fix this by adding the flag like what the other drivers do. > > Reported-by: Zorro Lang <[email protected]> > Closes: https://lore.kernel.org/r/20260314080937.pghb4aa7d4je3mhh@dell-per750-06-vm-08.rhts.eng.pek2.redhat.com > Fixes: 0880bb3b00c8 ("crypto: tegra - Add Tegra Security Engine driver") > Cc: [email protected] > Cc: Akhil R <[email protected]> > Signed-off-by: Eric Biggers <[email protected]> > --- Thanks for you quick response, Eric. This fix works on my side. With this patch, same reproducer can't trigger that bug anymore. Thanks, Zorro > > This patch is targeting crypto/master > > drivers/crypto/tegra/tegra-se-aes.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/crypto/tegra/tegra-se-aes.c b/drivers/crypto/tegra/tegra-se-aes.c > index 0e07d0523291a..cb97a59084519 100644 > --- a/drivers/crypto/tegra/tegra-se-aes.c > +++ b/drivers/crypto/tegra/tegra-se-aes.c > @@ -592,10 +592,11 @@ static struct tegra_se_alg tegra_aes_algs[] = { > .ivsize = AES_BLOCK_SIZE, > .base = { > .cra_name = "xts(aes)", > .cra_driver_name = "xts-aes-tegra", > .cra_priority = 500, > + .cra_flags = CRYPTO_ALG_ASYNC, > .cra_blocksize = AES_BLOCK_SIZE, > .cra_ctxsize = sizeof(struct tegra_aes_ctx), > .cra_alignmask = (__alignof__(u64) - 1), > .cra_module = THIS_MODULE, > }, > @@ -1920,10 +1921,11 @@ static struct tegra_se_alg tegra_aead_algs[] = { > .ivsize = GCM_AES_IV_SIZE, > .base = { > .cra_name = "gcm(aes)", > .cra_driver_name = "gcm-aes-tegra", > .cra_priority = 500, > + .cra_flags = CRYPTO_ALG_ASYNC, > .cra_blocksize = 1, > .cra_ctxsize = sizeof(struct tegra_aead_ctx), > .cra_alignmask = 0xf, > .cra_module = THIS_MODULE, > }, > @@ -1942,10 +1944,11 @@ static struct tegra_se_alg tegra_aead_algs[] = { > .chunksize = AES_BLOCK_SIZE, > .base = { > .cra_name = "ccm(aes)", > .cra_driver_name = "ccm-aes-tegra", > .cra_priority = 500, > + .cra_flags = CRYPTO_ALG_ASYNC, > .cra_blocksize = 1, > .cra_ctxsize = sizeof(struct tegra_aead_ctx), > .cra_alignmask = 0xf, > .cra_module = THIS_MODULE, > }, > @@ -1969,11 +1972,11 @@ static struct tegra_se_alg tegra_cmac_algs[] = { > .halg.statesize = sizeof(struct tegra_cmac_reqctx), > .halg.base = { > .cra_name = "cmac(aes)", > .cra_driver_name = "tegra-se-cmac", > .cra_priority = 300, > - .cra_flags = CRYPTO_ALG_TYPE_AHASH, > + .cra_flags = CRYPTO_ALG_TYPE_AHASH | CRYPTO_ALG_ASYNC, > .cra_blocksize = AES_BLOCK_SIZE, > .cra_ctxsize = sizeof(struct tegra_cmac_ctx), > .cra_alignmask = 0, > .cra_module = THIS_MODULE, > .cra_init = tegra_cmac_cra_init, > > base-commit: 1c9982b4961334c1edb0745a04cabd34bc2de675 > -- > 2.53.0 >