]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-4.14/crypto-rockchip-fix-scatterlist-nents-error.patch
drop some duplicated patches that somehow got merged.
[thirdparty/kernel/stable-queue.git] / queue-4.14 / crypto-rockchip-fix-scatterlist-nents-error.patch
1 From 4359669a087633132203c52d67dd8c31e09e7b2e Mon Sep 17 00:00:00 2001
2 From: Zhang Zhijie <zhangzj@rock-chips.com>
3 Date: Wed, 13 Feb 2019 16:24:38 +0800
4 Subject: crypto: rockchip - fix scatterlist nents error
5
6 From: Zhang Zhijie <zhangzj@rock-chips.com>
7
8 commit 4359669a087633132203c52d67dd8c31e09e7b2e upstream.
9
10 In some cases, the nents of src scatterlist is different from
11 dst scatterlist. So two variables are used to handle the nents
12 of src&dst scatterlist.
13
14 Reported-by: Eric Biggers <ebiggers@google.com>
15 Fixes: 433cd2c617bf ("crypto: rockchip - add crypto driver for rk3288")
16 Cc: <stable@vger.kernel.org> # v4.5+
17 Signed-off-by: Zhang Zhijie <zhangzj@rock-chips.com>
18 Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
19 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20
21 ---
22 drivers/crypto/rockchip/rk3288_crypto.c | 2 +-
23 drivers/crypto/rockchip/rk3288_crypto.h | 3 ++-
24 drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c | 5 +++--
25 drivers/crypto/rockchip/rk3288_crypto_ahash.c | 2 +-
26 4 files changed, 7 insertions(+), 5 deletions(-)
27
28 --- a/drivers/crypto/rockchip/rk3288_crypto.c
29 +++ b/drivers/crypto/rockchip/rk3288_crypto.c
30 @@ -119,7 +119,7 @@ static int rk_load_data(struct rk_crypto
31 count = (dev->left_bytes > PAGE_SIZE) ?
32 PAGE_SIZE : dev->left_bytes;
33
34 - if (!sg_pcopy_to_buffer(dev->first, dev->nents,
35 + if (!sg_pcopy_to_buffer(dev->first, dev->src_nents,
36 dev->addr_vir, count,
37 dev->total - dev->left_bytes)) {
38 dev_err(dev->dev, "[%s:%d] pcopy err\n",
39 --- a/drivers/crypto/rockchip/rk3288_crypto.h
40 +++ b/drivers/crypto/rockchip/rk3288_crypto.h
41 @@ -207,7 +207,8 @@ struct rk_crypto_info {
42 void *addr_vir;
43 int aligned;
44 int align_size;
45 - size_t nents;
46 + size_t src_nents;
47 + size_t dst_nents;
48 unsigned int total;
49 unsigned int count;
50 dma_addr_t addr_in;
51 --- a/drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c
52 +++ b/drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c
53 @@ -260,8 +260,9 @@ static int rk_ablk_start(struct rk_crypt
54 dev->total = req->nbytes;
55 dev->sg_src = req->src;
56 dev->first = req->src;
57 - dev->nents = sg_nents(req->src);
58 + dev->src_nents = sg_nents(req->src);
59 dev->sg_dst = req->dst;
60 + dev->dst_nents = sg_nents(req->dst);
61 dev->aligned = 1;
62
63 spin_lock_irqsave(&dev->lock, flags);
64 @@ -297,7 +298,7 @@ static int rk_ablk_rx(struct rk_crypto_i
65
66 dev->unload_data(dev);
67 if (!dev->aligned) {
68 - if (!sg_pcopy_from_buffer(req->dst, dev->nents,
69 + if (!sg_pcopy_from_buffer(req->dst, dev->dst_nents,
70 dev->addr_vir, dev->count,
71 dev->total - dev->left_bytes -
72 dev->count)) {
73 --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c
74 +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c
75 @@ -206,7 +206,7 @@ static int rk_ahash_start(struct rk_cryp
76 dev->sg_dst = NULL;
77 dev->sg_src = req->src;
78 dev->first = req->src;
79 - dev->nents = sg_nents(req->src);
80 + dev->src_nents = sg_nents(req->src);
81 rctx = ahash_request_ctx(req);
82 rctx->mode = 0;
83