* [PATCH] crypto: tegra - Add missing CRYPTO_ALG_ASYNC
@ 2026-03-14 16:55 Eric Biggers
2026-03-15 15:55 ` Zorro Lang
2026-03-16 5:00 ` Akhil R
0 siblings, 2 replies; 3+ messages in thread
From: Eric Biggers @ 2026-03-14 16:55 UTC (permalink / raw)
To: Herbert Xu, linux-crypto
Cc: linux-ext4, linux-fscrypt, Thierry Reding, Jonathan Hunter,
Eric Biggers, Zorro Lang, stable, Akhil R
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 <zlang@redhat.com>
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: stable@vger.kernel.org
Cc: Akhil R <akhilrajeev@nvidia.com>
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
---
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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] crypto: tegra - Add missing CRYPTO_ALG_ASYNC
2026-03-14 16:55 [PATCH] crypto: tegra - Add missing CRYPTO_ALG_ASYNC Eric Biggers
@ 2026-03-15 15:55 ` Zorro Lang
2026-03-16 5:00 ` Akhil R
1 sibling, 0 replies; 3+ messages in thread
From: Zorro Lang @ 2026-03-15 15:55 UTC (permalink / raw)
To: Eric Biggers
Cc: Herbert Xu, linux-crypto, linux-ext4, linux-fscrypt,
Thierry Reding, Jonathan Hunter, stable, Akhil R
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 <zlang@redhat.com>
> 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: stable@vger.kernel.org
> Cc: Akhil R <akhilrajeev@nvidia.com>
> Signed-off-by: Eric Biggers <ebiggers@kernel.org>
> ---
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
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] crypto: tegra - Add missing CRYPTO_ALG_ASYNC
2026-03-14 16:55 [PATCH] crypto: tegra - Add missing CRYPTO_ALG_ASYNC Eric Biggers
2026-03-15 15:55 ` Zorro Lang
@ 2026-03-16 5:00 ` Akhil R
1 sibling, 0 replies; 3+ messages in thread
From: Akhil R @ 2026-03-16 5:00 UTC (permalink / raw)
To: ebiggers
Cc: akhilrajeev, herbert, jonathanh, linux-crypto, linux-ext4,
linux-fscrypt, stable, thierry.reding, zlang
On Sat, 14 Mar 2026 09:55:15 -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 <zlang@redhat.com>
> 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: stable@vger.kernel.org
> Cc: Akhil R <akhilrajeev@nvidia.com>
> Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Thanks for the fix. Looks like CRYPTO_ALG_ASYNC is missing for the hash
algorithms in tegra-se-hash.c as well. Would you want to include those
in this patch? I can push a separate patch if you suggest.
Acked-by: Akhil R <akhilrajeev@nvidia.com>
>
> 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
Best Regards,
Akhil
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-03-16 5:01 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-14 16:55 [PATCH] crypto: tegra - Add missing CRYPTO_ALG_ASYNC Eric Biggers
2026-03-15 15:55 ` Zorro Lang
2026-03-16 5:00 ` Akhil R
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox