Commit e764d81d authored by Kai Ye's avatar Kai Ye Committed by Herbert Xu

crypto: hisilicon/sec - add some comments for soft fallback

Modify the print of information that might lead to user misunderstanding.
Currently only XTS mode need the fallback tfm when using 192bit key.
Others algs not need soft fallback tfm. So others algs can return
directly.
Signed-off-by: default avatarKai Ye <yekai13@huawei.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 60ef3dde
...@@ -641,13 +641,15 @@ static int sec_skcipher_fbtfm_init(struct crypto_skcipher *tfm) ...@@ -641,13 +641,15 @@ static int sec_skcipher_fbtfm_init(struct crypto_skcipher *tfm)
struct sec_cipher_ctx *c_ctx = &ctx->c_ctx; struct sec_cipher_ctx *c_ctx = &ctx->c_ctx;
c_ctx->fallback = false; c_ctx->fallback = false;
/* Currently, only XTS mode need fallback tfm when using 192bit key */
if (likely(strncmp(alg, "xts", SEC_XTS_NAME_SZ))) if (likely(strncmp(alg, "xts", SEC_XTS_NAME_SZ)))
return 0; return 0;
c_ctx->fbtfm = crypto_alloc_sync_skcipher(alg, 0, c_ctx->fbtfm = crypto_alloc_sync_skcipher(alg, 0,
CRYPTO_ALG_NEED_FALLBACK); CRYPTO_ALG_NEED_FALLBACK);
if (IS_ERR(c_ctx->fbtfm)) { if (IS_ERR(c_ctx->fbtfm)) {
pr_err("failed to alloc fallback tfm!\n"); pr_err("failed to alloc xts mode fallback tfm!\n");
return PTR_ERR(c_ctx->fbtfm); return PTR_ERR(c_ctx->fbtfm);
} }
...@@ -808,7 +810,7 @@ static int sec_skcipher_setkey(struct crypto_skcipher *tfm, const u8 *key, ...@@ -808,7 +810,7 @@ static int sec_skcipher_setkey(struct crypto_skcipher *tfm, const u8 *key,
} }
memcpy(c_ctx->c_key, key, keylen); memcpy(c_ctx->c_key, key, keylen);
if (c_ctx->fallback) { if (c_ctx->fallback && c_ctx->fbtfm) {
ret = crypto_sync_skcipher_setkey(c_ctx->fbtfm, key, keylen); ret = crypto_sync_skcipher_setkey(c_ctx->fbtfm, key, keylen);
if (ret) { if (ret) {
dev_err(dev, "failed to set fallback skcipher key!\n"); dev_err(dev, "failed to set fallback skcipher key!\n");
...@@ -2032,13 +2034,12 @@ static int sec_skcipher_soft_crypto(struct sec_ctx *ctx, ...@@ -2032,13 +2034,12 @@ static int sec_skcipher_soft_crypto(struct sec_ctx *ctx,
struct skcipher_request *sreq, bool encrypt) struct skcipher_request *sreq, bool encrypt)
{ {
struct sec_cipher_ctx *c_ctx = &ctx->c_ctx; struct sec_cipher_ctx *c_ctx = &ctx->c_ctx;
SYNC_SKCIPHER_REQUEST_ON_STACK(subreq, c_ctx->fbtfm);
struct device *dev = ctx->dev; struct device *dev = ctx->dev;
int ret; int ret;
SYNC_SKCIPHER_REQUEST_ON_STACK(subreq, c_ctx->fbtfm);
if (!c_ctx->fbtfm) { if (!c_ctx->fbtfm) {
dev_err(dev, "failed to check fallback tfm\n"); dev_err_ratelimited(dev, "the soft tfm isn't supported in the current system.\n");
return -EINVAL; return -EINVAL;
} }
...@@ -2256,7 +2257,6 @@ static int sec_aead_param_check(struct sec_ctx *ctx, struct sec_req *sreq) ...@@ -2256,7 +2257,6 @@ static int sec_aead_param_check(struct sec_ctx *ctx, struct sec_req *sreq)
if (ctx->sec->qm.ver == QM_HW_V2) { if (ctx->sec->qm.ver == QM_HW_V2) {
if (unlikely(!req->cryptlen || (!sreq->c_req.encrypt && if (unlikely(!req->cryptlen || (!sreq->c_req.encrypt &&
req->cryptlen <= authsize))) { req->cryptlen <= authsize))) {
dev_err(dev, "Kunpeng920 not support 0 length!\n");
ctx->a_ctx.fallback = true; ctx->a_ctx.fallback = true;
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment