crypto: nx - don't abuse shash MAY_SLEEP flag
authorEric Biggers <ebiggers@google.com>
Mon, 15 Apr 2019 00:37:08 +0000 (17:37 -0700)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 25 Apr 2019 07:38:12 +0000 (15:38 +0800)
The nx driver uses the MAY_SLEEP flag in shash_desc::flags as an
indicator to not retry sending the operation to the hardware as many
times before returning -EBUSY.  This is bogus because (1) that's not
what the MAY_SLEEP flag is for, and (2) the shash API doesn't allow
failing if the hardware is busy anyway.

For now, just make it always retry the larger number of times.  This
doesn't actually fix this driver, but it at least makes it not use the
shash_desc::flags field anymore.  Then this field can be removed, as no
other drivers use it.

Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/nx/nx-aes-xcbc.c
drivers/crypto/nx/nx-sha256.c
drivers/crypto/nx/nx-sha512.c

index ad3358e74f5c442df14c75c76f8ec6b6e9fb0158..8f5820b78a83bcd35a7f192452dc75977414dd5d 100644 (file)
@@ -105,8 +105,7 @@ static int nx_xcbc_empty(struct shash_desc *desc, u8 *out)
        nx_ctx->op.inlen = (nx_ctx->in_sg - in_sg) * sizeof(struct nx_sg);
        nx_ctx->op.outlen = (nx_ctx->out_sg - out_sg) * sizeof(struct nx_sg);
 
-       rc = nx_hcall_sync(nx_ctx, &nx_ctx->op,
-                          desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP);
+       rc = nx_hcall_sync(nx_ctx, &nx_ctx->op, 0);
        if (rc)
                goto out;
        atomic_inc(&(nx_ctx->stats->aes_ops));
@@ -134,8 +133,7 @@ static int nx_xcbc_empty(struct shash_desc *desc, u8 *out)
        nx_ctx->op.inlen = (nx_ctx->in_sg - in_sg) * sizeof(struct nx_sg);
        nx_ctx->op.outlen = (nx_ctx->out_sg - out_sg) * sizeof(struct nx_sg);
 
-       rc = nx_hcall_sync(nx_ctx, &nx_ctx->op,
-                          desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP);
+       rc = nx_hcall_sync(nx_ctx, &nx_ctx->op, 0);
        if (rc)
                goto out;
        atomic_inc(&(nx_ctx->stats->aes_ops));
@@ -279,8 +277,7 @@ static int nx_xcbc_update(struct shash_desc *desc,
                        goto out;
                }
 
-               rc = nx_hcall_sync(nx_ctx, &nx_ctx->op,
-                          desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP);
+               rc = nx_hcall_sync(nx_ctx, &nx_ctx->op, 0);
                if (rc)
                        goto out;
 
@@ -361,8 +358,7 @@ static int nx_xcbc_final(struct shash_desc *desc, u8 *out)
                goto out;
        }
 
-       rc = nx_hcall_sync(nx_ctx, &nx_ctx->op,
-                          desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP);
+       rc = nx_hcall_sync(nx_ctx, &nx_ctx->op, 0);
        if (rc)
                goto out;
 
index a6764af83c6dc7b4c028761b5cae8f7b4bec803e..e06f0431dee5febeb4f2e41699fec74e046d4dd9 100644 (file)
@@ -162,8 +162,7 @@ static int nx_sha256_update(struct shash_desc *desc, const u8 *data,
                        goto out;
                }
 
-               rc = nx_hcall_sync(nx_ctx, &nx_ctx->op,
-                                  desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP);
+               rc = nx_hcall_sync(nx_ctx, &nx_ctx->op, 0);
                if (rc)
                        goto out;
 
@@ -243,8 +242,7 @@ static int nx_sha256_final(struct shash_desc *desc, u8 *out)
                goto out;
        }
 
-       rc = nx_hcall_sync(nx_ctx, &nx_ctx->op,
-                          desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP);
+       rc = nx_hcall_sync(nx_ctx, &nx_ctx->op, 0);
        if (rc)
                goto out;
 
index 92956bc6e45eed1cff29d56040d2615e34ae6a8e..0293b17903d0cd85d5099f49ec0824cdda305f09 100644 (file)
@@ -166,8 +166,7 @@ static int nx_sha512_update(struct shash_desc *desc, const u8 *data,
                        goto out;
                }
 
-               rc = nx_hcall_sync(nx_ctx, &nx_ctx->op,
-                                  desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP);
+               rc = nx_hcall_sync(nx_ctx, &nx_ctx->op, 0);
                if (rc)
                        goto out;
 
@@ -249,8 +248,7 @@ static int nx_sha512_final(struct shash_desc *desc, u8 *out)
                goto out;
        }
 
-       rc = nx_hcall_sync(nx_ctx, &nx_ctx->op,
-                          desc->flags & CRYPTO_TFM_REQ_MAY_SLEEP);
+       rc = nx_hcall_sync(nx_ctx, &nx_ctx->op, 0);
        if (rc)
                goto out;