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.pghb4aa7d4je3...@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]>
---

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


Reply via email to