FAILED: patch "[PATCH] crypto: rockchip - fix scatterlist nents error" failed to apply to 4.9-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 4359669a087633132203c52d67dd8c31e09e7b2e Mon Sep 17 00:00:00 2001
From: Zhang Zhijie <[email protected]>
Date: Wed, 13 Feb 2019 16:24:38 +0800
Subject: [PATCH] crypto: rockchip - fix scatterlist nents error
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 <[email protected]>
Fixes 433cd2c617bf ("crypto: rockchip - add crypto driver for rk3288")
Cc <[email protected]> # v4.5+
Signed-off-by Zhang Zhijie <[email protected]>
Signed-off-by Herbert Xu <[email protected]>
drivers/crypto/rockchip/rk3288_crypto.c +1 -1
@@ -119,7 +119,7 @@ static int rk_load_data(struct rk_crypto_info *dev, 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",
drivers/crypto/rockchip/rk3288_crypto.h +2 -1
@@ -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;
drivers/crypto/rockchip/rk3288_crypto_ablkcipher.c +3 -2
@@ -260,8 +260,9 @@ static int rk_ablk_start(struct rk_crypto_info *dev) 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_info *dev) 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)) {
drivers/crypto/rockchip/rk3288_crypto_ahash.c +1 -1
@@ -206,7 +206,7 @@ static int rk_ahash_start(struct rk_crypto_info *dev) 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 ;