* [PATCH 1/6] crypto: gemin: Fix error check for dma_map_sg
[not found] <20220825072421.29020-1-jinpu.wang@ionos.com>
@ 2022-08-25 7:24 ` Jack Wang
2022-09-02 10:13 ` Herbert Xu
2022-08-25 7:24 ` [PATCH 2/6] crypto: sahara: " Jack Wang
` (4 subsequent siblings)
5 siblings, 1 reply; 9+ messages in thread
From: Jack Wang @ 2022-08-25 7:24 UTC (permalink / raw)
To: herbert, linux-crypto
Cc: Corentin Labbe, Hans Ulli Kroll, Linus Walleij, David S. Miller,
linux-arm-kernel, linux-kernel
dma_map_sg return 0 on error.
Cc: Corentin Labbe <clabbe@baylibre.com>
Cc: Hans Ulli Kroll <ulli.kroll@googlemail.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: linux-crypto@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Fixes: 46c5338db7bd ("crypto: sl3516 - Add sl3516 crypto engine")
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
---
drivers/crypto/gemini/sl3516-ce-cipher.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/crypto/gemini/sl3516-ce-cipher.c b/drivers/crypto/gemini/sl3516-ce-cipher.c
index 14d0d83d388d..34fea8aa91b6 100644
--- a/drivers/crypto/gemini/sl3516-ce-cipher.c
+++ b/drivers/crypto/gemini/sl3516-ce-cipher.c
@@ -149,7 +149,7 @@ static int sl3516_ce_cipher(struct skcipher_request *areq)
if (areq->src == areq->dst) {
nr_sgs = dma_map_sg(ce->dev, areq->src, sg_nents(areq->src),
DMA_BIDIRECTIONAL);
- if (nr_sgs <= 0 || nr_sgs > MAXDESC / 2) {
+ if (!nr_sgs || nr_sgs > MAXDESC / 2) {
dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
err = -EINVAL;
goto theend;
@@ -158,14 +158,14 @@ static int sl3516_ce_cipher(struct skcipher_request *areq)
} else {
nr_sgs = dma_map_sg(ce->dev, areq->src, sg_nents(areq->src),
DMA_TO_DEVICE);
- if (nr_sgs <= 0 || nr_sgs > MAXDESC / 2) {
+ if (!nr_sgs || nr_sgs > MAXDESC / 2) {
dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
err = -EINVAL;
goto theend;
}
nr_sgd = dma_map_sg(ce->dev, areq->dst, sg_nents(areq->dst),
DMA_FROM_DEVICE);
- if (nr_sgd <= 0 || nr_sgd > MAXDESC) {
+ if (!nr_sgd || nr_sgd > MAXDESC) {
dev_err(ce->dev, "Invalid sg number %d\n", nr_sgd);
err = -EINVAL;
goto theend_sgs;
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/6] crypto: sahara: Fix error check for dma_map_sg
[not found] <20220825072421.29020-1-jinpu.wang@ionos.com>
2022-08-25 7:24 ` [PATCH 1/6] crypto: gemin: Fix error check for dma_map_sg Jack Wang
@ 2022-08-25 7:24 ` Jack Wang
2022-08-25 7:24 ` [PATCH 3/6] crypto: qce: Fix dma_map_sg error check Jack Wang
` (3 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Jack Wang @ 2022-08-25 7:24 UTC (permalink / raw)
To: herbert, linux-crypto; +Cc: David S. Miller, linux-kernel
dma_map_sg return 0 on error, it returns the number of
DMA address segments mapped (this may be shorter
than <nents> passed in if some elements of the scatter/gather
list are physically or virtually adjacent and an IOMMU maps
them with a single entry).
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: linux-crypto@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Fixes: 5de8875281e1 ("crypto: sahara - Add driver for SAHARA2 accelerator.")
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
---
drivers/crypto/sahara.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/crypto/sahara.c b/drivers/crypto/sahara.c
index 457084b344c1..bb71aac30e2c 100644
--- a/drivers/crypto/sahara.c
+++ b/drivers/crypto/sahara.c
@@ -487,13 +487,13 @@ static int sahara_hw_descriptor_create(struct sahara_dev *dev)
ret = dma_map_sg(dev->device, dev->in_sg, dev->nb_in_sg,
DMA_TO_DEVICE);
- if (ret != dev->nb_in_sg) {
+ if (!ret) {
dev_err(dev->device, "couldn't map in sg\n");
goto unmap_in;
}
ret = dma_map_sg(dev->device, dev->out_sg, dev->nb_out_sg,
DMA_FROM_DEVICE);
- if (ret != dev->nb_out_sg) {
+ if (!ret) {
dev_err(dev->device, "couldn't map out sg\n");
goto unmap_out;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/6] crypto: qce: Fix dma_map_sg error check
[not found] <20220825072421.29020-1-jinpu.wang@ionos.com>
2022-08-25 7:24 ` [PATCH 1/6] crypto: gemin: Fix error check for dma_map_sg Jack Wang
2022-08-25 7:24 ` [PATCH 2/6] crypto: sahara: " Jack Wang
@ 2022-08-25 7:24 ` Jack Wang
2022-08-25 7:24 ` [PATCH 4/6] crypto: amlogic: " Jack Wang
` (2 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Jack Wang @ 2022-08-25 7:24 UTC (permalink / raw)
To: herbert, linux-crypto
Cc: Thara Gopinath, David S. Miller, linux-arm-msm, linux-kernel
dma_map_sg return 0 on error, fix the error check and return -EIO to
caller.
Cc: Thara Gopinath <thara.gopinath@gmail.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: linux-crypto@vger.kernel.org
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Fixes: ec8f5d8f6f76 ("crypto: qce - Qualcomm crypto engine driver")
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
---
drivers/crypto/qce/aead.c | 4 ++--
drivers/crypto/qce/sha.c | 8 +++++---
drivers/crypto/qce/skcipher.c | 8 ++++----
3 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/drivers/crypto/qce/aead.c b/drivers/crypto/qce/aead.c
index 97a530171f07..6eb4d2e35629 100644
--- a/drivers/crypto/qce/aead.c
+++ b/drivers/crypto/qce/aead.c
@@ -450,8 +450,8 @@ qce_aead_async_req_handle(struct crypto_async_request *async_req)
if (ret)
return ret;
dst_nents = dma_map_sg(qce->dev, rctx->dst_sg, rctx->dst_nents, dir_dst);
- if (dst_nents < 0) {
- ret = dst_nents;
+ if (!dst_nents) {
+ ret = -EIO;
goto error_free;
}
diff --git a/drivers/crypto/qce/sha.c b/drivers/crypto/qce/sha.c
index 59159f5e64e5..37bafd7aeb79 100644
--- a/drivers/crypto/qce/sha.c
+++ b/drivers/crypto/qce/sha.c
@@ -97,14 +97,16 @@ static int qce_ahash_async_req_handle(struct crypto_async_request *async_req)
}
ret = dma_map_sg(qce->dev, req->src, rctx->src_nents, DMA_TO_DEVICE);
- if (ret < 0)
- return ret;
+ if (!ret)
+ return -EIO;
sg_init_one(&rctx->result_sg, qce->dma.result_buf, QCE_RESULT_BUF_SZ);
ret = dma_map_sg(qce->dev, &rctx->result_sg, 1, DMA_FROM_DEVICE);
- if (ret < 0)
+ if (!ret) {
+ ret = -EIO;
goto error_unmap_src;
+ }
ret = qce_dma_prep_sgs(&qce->dma, req->src, rctx->src_nents,
&rctx->result_sg, 1, qce_ahash_done, async_req);
diff --git a/drivers/crypto/qce/skcipher.c b/drivers/crypto/qce/skcipher.c
index 3d27cd5210ef..5b493fdc1e74 100644
--- a/drivers/crypto/qce/skcipher.c
+++ b/drivers/crypto/qce/skcipher.c
@@ -124,15 +124,15 @@ qce_skcipher_async_req_handle(struct crypto_async_request *async_req)
rctx->dst_sg = rctx->dst_tbl.sgl;
dst_nents = dma_map_sg(qce->dev, rctx->dst_sg, rctx->dst_nents, dir_dst);
- if (dst_nents < 0) {
- ret = dst_nents;
+ if (!dst_nents) {
+ ret = -EIO;
goto error_free;
}
if (diff_dst) {
src_nents = dma_map_sg(qce->dev, req->src, rctx->src_nents, dir_src);
- if (src_nents < 0) {
- ret = src_nents;
+ if (!src_nents) {
+ ret = -EIO;
goto error_unmap_dst;
}
rctx->src_sg = req->src;
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/6] crypto: amlogic: Fix dma_map_sg error check
[not found] <20220825072421.29020-1-jinpu.wang@ionos.com>
` (2 preceding siblings ...)
2022-08-25 7:24 ` [PATCH 3/6] crypto: qce: Fix dma_map_sg error check Jack Wang
@ 2022-08-25 7:24 ` Jack Wang
2022-08-25 7:24 ` [PATCH 5/6] crypto: allwinner: " Jack Wang
2022-08-25 7:24 ` [PATCH 6/6] crypto: ccree: " Jack Wang
5 siblings, 0 replies; 9+ messages in thread
From: Jack Wang @ 2022-08-25 7:24 UTC (permalink / raw)
To: herbert, linux-crypto
Cc: Corentin Labbe, David S. Miller, linux-amlogic, linux-kernel
dma_map_sg return 0 on error.
Cc: Corentin Labbe <clabbe@baylibre.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: linux-crypto@vger.kernel.org
Cc: linux-amlogic@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Fixes: 48fe583fe541 ("crypto: amlogic - Add crypto accelerator for amlogic GXL")
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
---
drivers/crypto/amlogic/amlogic-gxl-cipher.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/amlogic/amlogic-gxl-cipher.c
index e79514fce731..af017a087ebf 100644
--- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c
+++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c
@@ -177,7 +177,7 @@ static int meson_cipher(struct skcipher_request *areq)
if (areq->src == areq->dst) {
nr_sgs = dma_map_sg(mc->dev, areq->src, sg_nents(areq->src),
DMA_BIDIRECTIONAL);
- if (nr_sgs < 0) {
+ if (!nr_sgs) {
dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs);
err = -EINVAL;
goto theend;
@@ -186,14 +186,14 @@ static int meson_cipher(struct skcipher_request *areq)
} else {
nr_sgs = dma_map_sg(mc->dev, areq->src, sg_nents(areq->src),
DMA_TO_DEVICE);
- if (nr_sgs < 0 || nr_sgs > MAXDESC - 3) {
+ if (!nr_sgs || nr_sgs > MAXDESC - 3) {
dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs);
err = -EINVAL;
goto theend;
}
nr_sgd = dma_map_sg(mc->dev, areq->dst, sg_nents(areq->dst),
DMA_FROM_DEVICE);
- if (nr_sgd < 0 || nr_sgd > MAXDESC - 3) {
+ if (!nr_sgd || nr_sgd > MAXDESC - 3) {
dev_err(mc->dev, "Invalid SG count %d\n", nr_sgd);
err = -EINVAL;
goto theend;
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 5/6] crypto: allwinner: Fix dma_map_sg error check
[not found] <20220825072421.29020-1-jinpu.wang@ionos.com>
` (3 preceding siblings ...)
2022-08-25 7:24 ` [PATCH 4/6] crypto: amlogic: " Jack Wang
@ 2022-08-25 7:24 ` Jack Wang
2022-08-25 20:36 ` Jernej Škrabec
2022-09-02 10:18 ` Herbert Xu
2022-08-25 7:24 ` [PATCH 6/6] crypto: ccree: " Jack Wang
5 siblings, 2 replies; 9+ messages in thread
From: Jack Wang @ 2022-08-25 7:24 UTC (permalink / raw)
To: herbert, linux-crypto
Cc: Corentin Labbe, David S. Miller, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Dan Carpenter, Minghao Chi, Peng Wu,
Alexey Khoroshilov, linux-arm-kernel, linux-sunxi, linux-kernel
dma_map_sg return 0 on error.
Cc: Corentin Labbe <clabbe.montjoie@gmail.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
Cc: Samuel Holland <samuel@sholland.org>
Cc: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Minghao Chi <chi.minghao@zte.com.cn>
Cc: Peng Wu <wupeng58@huawei.com>
Cc: Alexey Khoroshilov <khoroshilov@ispras.ru>
Cc: linux-crypto@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-sunxi@lists.linux.dev
Cc: linux-kernel@vger.kernel.org
Fixes: 06f751b61329 ("crypto: allwinner - Add sun8i-ce Crypto Engine")
Fixes: d9b45418a917 ("crypto: sun8i-ss - support hash algorithms")
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
---
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c | 6 +++---
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c | 2 +-
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 4 ++--
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 2 +-
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
index 74b4e910a38d..be7f46faef7e 100644
--- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
+++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
@@ -208,7 +208,7 @@ static int sun8i_ce_cipher_prepare(struct crypto_engine *engine, void *async_req
if (areq->src == areq->dst) {
nr_sgs = dma_map_sg(ce->dev, areq->src, ns, DMA_BIDIRECTIONAL);
- if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
+ if (!nr_sgs || nr_sgs > MAX_SG) {
dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
err = -EINVAL;
goto theend_iv;
@@ -216,13 +216,13 @@ static int sun8i_ce_cipher_prepare(struct crypto_engine *engine, void *async_req
nr_sgd = nr_sgs;
} else {
nr_sgs = dma_map_sg(ce->dev, areq->src, ns, DMA_TO_DEVICE);
- if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
+ if (!nr_sgs || nr_sgs > MAX_SG) {
dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
err = -EINVAL;
goto theend_iv;
}
nr_sgd = dma_map_sg(ce->dev, areq->dst, nd, DMA_FROM_DEVICE);
- if (nr_sgd <= 0 || nr_sgd > MAX_SG) {
+ if (!nr_sgd || nr_sgd > MAX_SG) {
dev_err(ce->dev, "Invalid sg number %d\n", nr_sgd);
err = -EINVAL;
goto theend_sgs;
diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c
index 8b5b9b9d04c3..0e6843ec197f 100644
--- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c
+++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c
@@ -389,7 +389,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)
cet->t_asym_ctl = 0;
nr_sgs = dma_map_sg(ce->dev, areq->src, ns, DMA_TO_DEVICE);
- if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
+ if (!nr_sgs || nr_sgs > MAX_SG) {
dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
err = -EINVAL;
goto theend;
diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
index 910d6751644c..fdcc98cdecaa 100644
--- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
+++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
@@ -232,13 +232,13 @@ static int sun8i_ss_cipher(struct skcipher_request *areq)
nr_sgd = nr_sgs;
} else {
nr_sgs = dma_map_sg(ss->dev, areq->src, nsgs, DMA_TO_DEVICE);
- if (nr_sgs <= 0 || nr_sgs > 8) {
+ if (!nr_sgs || nr_sgs > 8) {
dev_err(ss->dev, "Invalid sg number %d\n", nr_sgs);
err = -EINVAL;
goto theend_iv;
}
nr_sgd = dma_map_sg(ss->dev, areq->dst, nsgd, DMA_FROM_DEVICE);
- if (nr_sgd <= 0 || nr_sgd > 8) {
+ if (!nr_sgd || nr_sgd > 8) {
dev_err(ss->dev, "Invalid sg number %d\n", nr_sgd);
err = -EINVAL;
goto theend_sgs;
diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
index 36a82b22953c..fcb8c41cc957 100644
--- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
+++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
@@ -527,7 +527,7 @@ int sun8i_ss_hash_run(struct crypto_engine *engine, void *breq)
rctx->method = ss->variant->alg_hash[algt->ss_algo_id];
nr_sgs = dma_map_sg(ss->dev, areq->src, sg_nents(areq->src), DMA_TO_DEVICE);
- if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
+ if (!nr_sgs || nr_sgs > MAX_SG) {
dev_err(ss->dev, "Invalid sg number %d\n", nr_sgs);
err = -EINVAL;
goto theend;
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 6/6] crypto: ccree: Fix dma_map_sg error check
[not found] <20220825072421.29020-1-jinpu.wang@ionos.com>
` (4 preceding siblings ...)
2022-08-25 7:24 ` [PATCH 5/6] crypto: allwinner: " Jack Wang
@ 2022-08-25 7:24 ` Jack Wang
5 siblings, 0 replies; 9+ messages in thread
From: Jack Wang @ 2022-08-25 7:24 UTC (permalink / raw)
To: herbert, linux-crypto; +Cc: Gilad Ben-Yossef, David S. Miller, linux-kernel
dma_map_sg return 0 on error, and dma_map_error is not supposed to use
here.
Cc: Gilad Ben-Yossef <gilad@benyossef.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: linux-crypto@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Fixes: ce0fc6db38de ("crypto: ccree - protect against empty or NULL scatterlists")
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
---
drivers/crypto/ccree/cc_buffer_mgr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/crypto/ccree/cc_buffer_mgr.c b/drivers/crypto/ccree/cc_buffer_mgr.c
index 6140e4927322..9efd88f871d1 100644
--- a/drivers/crypto/ccree/cc_buffer_mgr.c
+++ b/drivers/crypto/ccree/cc_buffer_mgr.c
@@ -274,7 +274,7 @@ static int cc_map_sg(struct device *dev, struct scatterlist *sg,
}
ret = dma_map_sg(dev, sg, *nents, direction);
- if (dma_mapping_error(dev, ret)) {
+ if (!ret) {
*nents = 0;
dev_err(dev, "dma_map_sg() sg buffer failed %d\n", ret);
return -ENOMEM;
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 5/6] crypto: allwinner: Fix dma_map_sg error check
2022-08-25 7:24 ` [PATCH 5/6] crypto: allwinner: " Jack Wang
@ 2022-08-25 20:36 ` Jernej Škrabec
2022-09-02 10:18 ` Herbert Xu
1 sibling, 0 replies; 9+ messages in thread
From: Jernej Škrabec @ 2022-08-25 20:36 UTC (permalink / raw)
To: herbert, linux-crypto, Jack Wang
Cc: Corentin Labbe, David S. Miller, Chen-Yu Tsai, Samuel Holland,
Dan Carpenter, Minghao Chi, Peng Wu, Alexey Khoroshilov,
linux-arm-kernel, linux-sunxi, linux-kernel
Dne četrtek, 25. avgust 2022 ob 09:24:20 CEST je Jack Wang napisal(a):
> dma_map_sg return 0 on error.
>
> Cc: Corentin Labbe <clabbe.montjoie@gmail.com>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Chen-Yu Tsai <wens@csie.org>
> Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
> Cc: Samuel Holland <samuel@sholland.org>
> Cc: Dan Carpenter <dan.carpenter@oracle.com>
> Cc: Minghao Chi <chi.minghao@zte.com.cn>
> Cc: Peng Wu <wupeng58@huawei.com>
> Cc: Alexey Khoroshilov <khoroshilov@ispras.ru>
> Cc: linux-crypto@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-sunxi@lists.linux.dev
> Cc: linux-kernel@vger.kernel.org
> Fixes: 06f751b61329 ("crypto: allwinner - Add sun8i-ce Crypto Engine")
> Fixes: d9b45418a917 ("crypto: sun8i-ss - support hash algorithms")
> Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Best regards,
Jernej
> ---
> drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c | 6 +++---
> drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c | 2 +-
> drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 4 ++--
> drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 2 +-
> 4 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c index
> 74b4e910a38d..be7f46faef7e 100644
> --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> @@ -208,7 +208,7 @@ static int sun8i_ce_cipher_prepare(struct crypto_engine
> *engine, void *async_req
>
> if (areq->src == areq->dst) {
> nr_sgs = dma_map_sg(ce->dev, areq->src, ns,
DMA_BIDIRECTIONAL);
> - if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
> + if (!nr_sgs || nr_sgs > MAX_SG) {
> dev_err(ce->dev, "Invalid sg number %d\n",
nr_sgs);
> err = -EINVAL;
> goto theend_iv;
> @@ -216,13 +216,13 @@ static int sun8i_ce_cipher_prepare(struct
> crypto_engine *engine, void *async_req nr_sgd = nr_sgs;
> } else {
> nr_sgs = dma_map_sg(ce->dev, areq->src, ns,
DMA_TO_DEVICE);
> - if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
> + if (!nr_sgs || nr_sgs > MAX_SG) {
> dev_err(ce->dev, "Invalid sg number %d\n",
nr_sgs);
> err = -EINVAL;
> goto theend_iv;
> }
> nr_sgd = dma_map_sg(ce->dev, areq->dst, nd,
DMA_FROM_DEVICE);
> - if (nr_sgd <= 0 || nr_sgd > MAX_SG) {
> + if (!nr_sgd || nr_sgd > MAX_SG) {
> dev_err(ce->dev, "Invalid sg number %d\n",
nr_sgd);
> err = -EINVAL;
> goto theend_sgs;
> diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c
> b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c index
> 8b5b9b9d04c3..0e6843ec197f 100644
> --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c
> +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c
> @@ -389,7 +389,7 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void
> *breq) cet->t_asym_ctl = 0;
>
> nr_sgs = dma_map_sg(ce->dev, areq->src, ns, DMA_TO_DEVICE);
> - if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
> + if (!nr_sgs || nr_sgs > MAX_SG) {
> dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
> err = -EINVAL;
> goto theend;
> diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c index
> 910d6751644c..fdcc98cdecaa 100644
> --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> @@ -232,13 +232,13 @@ static int sun8i_ss_cipher(struct skcipher_request
> *areq) nr_sgd = nr_sgs;
> } else {
> nr_sgs = dma_map_sg(ss->dev, areq->src, nsgs,
DMA_TO_DEVICE);
> - if (nr_sgs <= 0 || nr_sgs > 8) {
> + if (!nr_sgs || nr_sgs > 8) {
> dev_err(ss->dev, "Invalid sg number %d\n",
nr_sgs);
> err = -EINVAL;
> goto theend_iv;
> }
> nr_sgd = dma_map_sg(ss->dev, areq->dst, nsgd,
DMA_FROM_DEVICE);
> - if (nr_sgd <= 0 || nr_sgd > 8) {
> + if (!nr_sgd || nr_sgd > 8) {
> dev_err(ss->dev, "Invalid sg number %d\n",
nr_sgd);
> err = -EINVAL;
> goto theend_sgs;
> diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
> b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c index
> 36a82b22953c..fcb8c41cc957 100644
> --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
> +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c
> @@ -527,7 +527,7 @@ int sun8i_ss_hash_run(struct crypto_engine *engine, void
> *breq) rctx->method = ss->variant->alg_hash[algt->ss_algo_id];
>
> nr_sgs = dma_map_sg(ss->dev, areq->src, sg_nents(areq->src),
> DMA_TO_DEVICE); - if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
> + if (!nr_sgs || nr_sgs > MAX_SG) {
> dev_err(ss->dev, "Invalid sg number %d\n", nr_sgs);
> err = -EINVAL;
> goto theend;
> --
> 2.34.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/6] crypto: gemin: Fix error check for dma_map_sg
2022-08-25 7:24 ` [PATCH 1/6] crypto: gemin: Fix error check for dma_map_sg Jack Wang
@ 2022-09-02 10:13 ` Herbert Xu
0 siblings, 0 replies; 9+ messages in thread
From: Herbert Xu @ 2022-09-02 10:13 UTC (permalink / raw)
To: Jack Wang
Cc: linux-crypto, Corentin Labbe, Hans Ulli Kroll, Linus Walleij,
David S. Miller, linux-arm-kernel, linux-kernel
On Thu, Aug 25, 2022 at 09:24:16AM +0200, Jack Wang wrote:
> dma_map_sg return 0 on error.
>
> Cc: Corentin Labbe <clabbe@baylibre.com>
> Cc: Hans Ulli Kroll <ulli.kroll@googlemail.com>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: linux-crypto@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-kernel@vger.kernel.org
> Fixes: 46c5338db7bd ("crypto: sl3516 - Add sl3516 crypto engine")
> Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
> ---
> drivers/crypto/gemini/sl3516-ce-cipher.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/crypto/gemini/sl3516-ce-cipher.c b/drivers/crypto/gemini/sl3516-ce-cipher.c
> index 14d0d83d388d..34fea8aa91b6 100644
> --- a/drivers/crypto/gemini/sl3516-ce-cipher.c
> +++ b/drivers/crypto/gemini/sl3516-ce-cipher.c
> @@ -149,7 +149,7 @@ static int sl3516_ce_cipher(struct skcipher_request *areq)
> if (areq->src == areq->dst) {
> nr_sgs = dma_map_sg(ce->dev, areq->src, sg_nents(areq->src),
> DMA_BIDIRECTIONAL);
> - if (nr_sgs <= 0 || nr_sgs > MAXDESC / 2) {
> + if (!nr_sgs || nr_sgs > MAXDESC / 2) {
> dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
> err = -EINVAL;
> goto theend;
The original code is correct and this patch is arguably making it
less robust. So I'll drop this particular patch.
Thanks,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 5/6] crypto: allwinner: Fix dma_map_sg error check
2022-08-25 7:24 ` [PATCH 5/6] crypto: allwinner: " Jack Wang
2022-08-25 20:36 ` Jernej Škrabec
@ 2022-09-02 10:18 ` Herbert Xu
1 sibling, 0 replies; 9+ messages in thread
From: Herbert Xu @ 2022-09-02 10:18 UTC (permalink / raw)
To: Jack Wang
Cc: linux-crypto, Corentin Labbe, David S. Miller, Chen-Yu Tsai,
Jernej Skrabec, Samuel Holland, Dan Carpenter, Minghao Chi,
Peng Wu, Alexey Khoroshilov, linux-arm-kernel, linux-sunxi,
linux-kernel
On Thu, Aug 25, 2022 at 09:24:20AM +0200, Jack Wang wrote:
> dma_map_sg return 0 on error.
>
> Cc: Corentin Labbe <clabbe.montjoie@gmail.com>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Chen-Yu Tsai <wens@csie.org>
> Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
> Cc: Samuel Holland <samuel@sholland.org>
> Cc: Dan Carpenter <dan.carpenter@oracle.com>
> Cc: Minghao Chi <chi.minghao@zte.com.cn>
> Cc: Peng Wu <wupeng58@huawei.com>
> Cc: Alexey Khoroshilov <khoroshilov@ispras.ru>
> Cc: linux-crypto@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-sunxi@lists.linux.dev
> Cc: linux-kernel@vger.kernel.org
> Fixes: 06f751b61329 ("crypto: allwinner - Add sun8i-ce Crypto Engine")
> Fixes: d9b45418a917 ("crypto: sun8i-ss - support hash algorithms")
> Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
> ---
> drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c | 6 +++---
> drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c | 2 +-
> drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 4 ++--
> drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 2 +-
> 4 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> index 74b4e910a38d..be7f46faef7e 100644
> --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> @@ -208,7 +208,7 @@ static int sun8i_ce_cipher_prepare(struct crypto_engine *engine, void *async_req
>
> if (areq->src == areq->dst) {
> nr_sgs = dma_map_sg(ce->dev, areq->src, ns, DMA_BIDIRECTIONAL);
> - if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
> + if (!nr_sgs || nr_sgs > MAX_SG) {
This is also less robust than the original code and I'll be
reverting it.
Thanks,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-09-02 10:19 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20220825072421.29020-1-jinpu.wang@ionos.com>
2022-08-25 7:24 ` [PATCH 1/6] crypto: gemin: Fix error check for dma_map_sg Jack Wang
2022-09-02 10:13 ` Herbert Xu
2022-08-25 7:24 ` [PATCH 2/6] crypto: sahara: " Jack Wang
2022-08-25 7:24 ` [PATCH 3/6] crypto: qce: Fix dma_map_sg error check Jack Wang
2022-08-25 7:24 ` [PATCH 4/6] crypto: amlogic: " Jack Wang
2022-08-25 7:24 ` [PATCH 5/6] crypto: allwinner: " Jack Wang
2022-08-25 20:36 ` Jernej Škrabec
2022-09-02 10:18 ` Herbert Xu
2022-08-25 7:24 ` [PATCH 6/6] crypto: ccree: " Jack Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).