lkml.org 
[lkml]   [2019]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.0 023/238] crypto: rockchip - fix scatterlist nents error
    Date
    5.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Zhang Zhijie <zhangzj@rock-chips.com>

    commit 4359669a087633132203c52d67dd8c31e09e7b2e upstream.

    In some cases, the nents of src scatterlist is different from
    dst scatterlist. So two variables are used to handle the nents
    of src&dst scatterlist.

    Reported-by: Eric Biggers <ebiggers@google.com>
    Fixes: 433cd2c617bf ("crypto: rockchip - add crypto driver for rk3288")
    Cc: <stable@vger.kernel.org> # v4.5+
    Signed-off-by: Zhang Zhijie <zhangzj@rock-chips.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/crypto/rockchip/rk3288_crypto.c | 2 +-
    drivers/crypto/rockchip/rk3288_crypto.h | 3 ++-
    drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c | 5 +++--
    drivers/crypto/rockchip/rk3288_crypto_ahash.c | 2 +-
    4 files changed, 7 insertions(+), 5 deletions(-)

    --- a/drivers/crypto/rockchip/rk3288_crypto.c
    +++ b/drivers/crypto/rockchip/rk3288_crypto.c
    @@ -119,7 +119,7 @@ static int rk_load_data(struct rk_crypto
    count = (dev->left_bytes > PAGE_SIZE) ?
    PAGE_SIZE : dev->left_bytes;

    - if (!sg_pcopy_to_buffer(dev->first, dev->nents,
    + if (!sg_pcopy_to_buffer(dev->first, dev->src_nents,
    dev->addr_vir, count,
    dev->total - dev->left_bytes)) {
    dev_err(dev->dev, "[%s:%d] pcopy err\n",
    --- a/drivers/crypto/rockchip/rk3288_crypto.h
    +++ b/drivers/crypto/rockchip/rk3288_crypto.h
    @@ -207,7 +207,8 @@ struct rk_crypto_info {
    void *addr_vir;
    int aligned;
    int align_size;
    - size_t nents;
    + size_t src_nents;
    + size_t dst_nents;
    unsigned int total;
    unsigned int count;
    dma_addr_t addr_in;
    --- a/drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c
    +++ b/drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c
    @@ -260,8 +260,9 @@ static int rk_ablk_start(struct rk_crypt
    dev->total = req->nbytes;
    dev->sg_src = req->src;
    dev->first = req->src;
    - dev->nents = sg_nents(req->src);
    + dev->src_nents = sg_nents(req->src);
    dev->sg_dst = req->dst;
    + dev->dst_nents = sg_nents(req->dst);
    dev->aligned = 1;

    spin_lock_irqsave(&dev->lock, flags);
    @@ -297,7 +298,7 @@ static int rk_ablk_rx(struct rk_crypto_i

    dev->unload_data(dev);
    if (!dev->aligned) {
    - if (!sg_pcopy_from_buffer(req->dst, dev->nents,
    + if (!sg_pcopy_from_buffer(req->dst, dev->dst_nents,
    dev->addr_vir, dev->count,
    dev->total - dev->left_bytes -
    dev->count)) {
    --- a/drivers/crypto/rockchip/rk3288_crypto_ahash.c
    +++ b/drivers/crypto/rockchip/rk3288_crypto_ahash.c
    @@ -206,7 +206,7 @@ static int rk_ahash_start(struct rk_cryp
    dev->sg_dst = NULL;
    dev->sg_src = req->src;
    dev->first = req->src;
    - dev->nents = sg_nents(req->src);
    + dev->src_nents = sg_nents(req->src);
    rctx = ahash_request_ctx(req);
    rctx->mode = 0;


    \
     
     \ /
      Last update: 2019-03-22 13:39    [W:4.151 / U:0.196 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site