From: kernel test robot <lkp@intel.com>
To: Corentin Labbe <clabbe@baylibre.com>,
davem@davemloft.net, herbert@gondor.apana.org.au,
jernej.skrabec@gmail.com, mripard@kernel.org, wens@csie.org
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
linux-arm-kernel@lists.infradead.org,
linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-sunxi@lists.linux.dev, linux-sunxi@googlegroups.com
Subject: Re: [PATCH 1/8] crypto: sun8i-ce: do not allocate memory when handling requests
Date: Thu, 27 Jan 2022 12:17:24 +0800 [thread overview]
Message-ID: <202201271243.hLjdr8IB-lkp@intel.com> (raw)
In-Reply-To: <20220126210441.3661782-2-clabbe@baylibre.com>
Hi Corentin,
I love your patch! Perhaps something to improve:
[auto build test WARNING on sunxi/sunxi/for-next]
[also build test WARNING on herbert-cryptodev-2.6/master herbert-crypto-2.6/master v5.17-rc1 next-20220125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Corentin-Labbe/crypto-allwinner-various-improvments/20220127-050556
base: https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git sunxi/for-next
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20220127/202201271243.hLjdr8IB-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 2a1b7aa016c0f4b5598806205bdfbab1ea2d92c4)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/0day-ci/linux/commit/d0b880af8c99abcd0f36463b82c92d71024408de
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Corentin-Labbe/crypto-allwinner-various-improvments/20220127-050556
git checkout d0b880af8c99abcd0f36463b82c92d71024408de
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/crypto/allwinner/sun8i-ce/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c:258:1: warning: unused label 'theend_key' [-Wunused-label]
theend_key:
^~~~~~~~~~~
1 warning generated.
vim +/theend_key +258 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
06f751b613296cc Corentin Labbe 2019-10-23 108
06f751b613296cc Corentin Labbe 2019-10-23 109 flow = rctx->flow;
06f751b613296cc Corentin Labbe 2019-10-23 110
06f751b613296cc Corentin Labbe 2019-10-23 111 chan = &ce->chanlist[flow];
06f751b613296cc Corentin Labbe 2019-10-23 112
06f751b613296cc Corentin Labbe 2019-10-23 113 cet = chan->tl;
06f751b613296cc Corentin Labbe 2019-10-23 114 memset(cet, 0, sizeof(struct ce_task));
06f751b613296cc Corentin Labbe 2019-10-23 115
93c7f4d357de68f Corentin Labbe 2019-11-17 116 cet->t_id = cpu_to_le32(flow);
93c7f4d357de68f Corentin Labbe 2019-11-17 117 common = ce->variant->alg_cipher[algt->ce_algo_id];
93c7f4d357de68f Corentin Labbe 2019-11-17 118 common |= rctx->op_dir | CE_COMM_INT;
93c7f4d357de68f Corentin Labbe 2019-11-17 119 cet->t_common_ctl = cpu_to_le32(common);
06f751b613296cc Corentin Labbe 2019-10-23 120 /* CTS and recent CE (H6) need length in bytes, in word otherwise */
6b4f76c2cd9e6c3 Corentin Labbe 2020-09-18 121 if (ce->variant->cipher_t_dlen_in_bytes)
93c7f4d357de68f Corentin Labbe 2019-11-17 122 cet->t_dlen = cpu_to_le32(areq->cryptlen);
93c7f4d357de68f Corentin Labbe 2019-11-17 123 else
93c7f4d357de68f Corentin Labbe 2019-11-17 124 cet->t_dlen = cpu_to_le32(areq->cryptlen / 4);
06f751b613296cc Corentin Labbe 2019-10-23 125
93c7f4d357de68f Corentin Labbe 2019-11-17 126 sym = ce->variant->op_mode[algt->ce_blockmode];
06f751b613296cc Corentin Labbe 2019-10-23 127 len = op->keylen;
06f751b613296cc Corentin Labbe 2019-10-23 128 switch (len) {
06f751b613296cc Corentin Labbe 2019-10-23 129 case 128 / 8:
93c7f4d357de68f Corentin Labbe 2019-11-17 130 sym |= CE_AES_128BITS;
06f751b613296cc Corentin Labbe 2019-10-23 131 break;
06f751b613296cc Corentin Labbe 2019-10-23 132 case 192 / 8:
93c7f4d357de68f Corentin Labbe 2019-11-17 133 sym |= CE_AES_192BITS;
06f751b613296cc Corentin Labbe 2019-10-23 134 break;
06f751b613296cc Corentin Labbe 2019-10-23 135 case 256 / 8:
93c7f4d357de68f Corentin Labbe 2019-11-17 136 sym |= CE_AES_256BITS;
06f751b613296cc Corentin Labbe 2019-10-23 137 break;
06f751b613296cc Corentin Labbe 2019-10-23 138 }
06f751b613296cc Corentin Labbe 2019-10-23 139
93c7f4d357de68f Corentin Labbe 2019-11-17 140 cet->t_sym_ctl = cpu_to_le32(sym);
06f751b613296cc Corentin Labbe 2019-10-23 141 cet->t_asym_ctl = 0;
06f751b613296cc Corentin Labbe 2019-10-23 142
0605fa0f78266cc Corentin Labbe 2020-09-18 143 rctx->addr_key = dma_map_single(ce->dev, op->key, op->keylen, DMA_TO_DEVICE);
0605fa0f78266cc Corentin Labbe 2020-09-18 144 if (dma_mapping_error(ce->dev, rctx->addr_key)) {
06f751b613296cc Corentin Labbe 2019-10-23 145 dev_err(ce->dev, "Cannot DMA MAP KEY\n");
06f751b613296cc Corentin Labbe 2019-10-23 146 err = -EFAULT;
06f751b613296cc Corentin Labbe 2019-10-23 147 goto theend;
06f751b613296cc Corentin Labbe 2019-10-23 148 }
0605fa0f78266cc Corentin Labbe 2020-09-18 149 cet->t_key = cpu_to_le32(rctx->addr_key);
06f751b613296cc Corentin Labbe 2019-10-23 150
06f751b613296cc Corentin Labbe 2019-10-23 151 ivsize = crypto_skcipher_ivsize(tfm);
06f751b613296cc Corentin Labbe 2019-10-23 152 if (areq->iv && crypto_skcipher_ivsize(tfm) > 0) {
a216f8d540cf132 Corentin Labbe 2020-09-18 153 rctx->ivlen = ivsize;
06f751b613296cc Corentin Labbe 2019-10-23 154 if (rctx->op_dir & CE_DECRYPTION) {
06f751b613296cc Corentin Labbe 2019-10-23 155 offset = areq->cryptlen - ivsize;
d0b880af8c99abc Corentin Labbe 2022-01-26 156 scatterwalk_map_and_copy(chan->backup_iv, areq->src,
a216f8d540cf132 Corentin Labbe 2020-09-18 157 offset, ivsize, 0);
06f751b613296cc Corentin Labbe 2019-10-23 158 }
d0b880af8c99abc Corentin Labbe 2022-01-26 159 memcpy(chan->bounce_iv, areq->iv, ivsize);
d0b880af8c99abc Corentin Labbe 2022-01-26 160 rctx->addr_iv = dma_map_single(ce->dev, chan->bounce_iv, rctx->ivlen,
93c7f4d357de68f Corentin Labbe 2019-11-17 161 DMA_TO_DEVICE);
0605fa0f78266cc Corentin Labbe 2020-09-18 162 if (dma_mapping_error(ce->dev, rctx->addr_iv)) {
06f751b613296cc Corentin Labbe 2019-10-23 163 dev_err(ce->dev, "Cannot DMA MAP IV\n");
06f751b613296cc Corentin Labbe 2019-10-23 164 err = -ENOMEM;
06f751b613296cc Corentin Labbe 2019-10-23 165 goto theend_iv;
06f751b613296cc Corentin Labbe 2019-10-23 166 }
0605fa0f78266cc Corentin Labbe 2020-09-18 167 cet->t_iv = cpu_to_le32(rctx->addr_iv);
06f751b613296cc Corentin Labbe 2019-10-23 168 }
06f751b613296cc Corentin Labbe 2019-10-23 169
06f751b613296cc Corentin Labbe 2019-10-23 170 if (areq->src == areq->dst) {
06f751b613296cc Corentin Labbe 2019-10-23 171 nr_sgs = dma_map_sg(ce->dev, areq->src, sg_nents(areq->src),
06f751b613296cc Corentin Labbe 2019-10-23 172 DMA_BIDIRECTIONAL);
06f751b613296cc Corentin Labbe 2019-10-23 173 if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
06f751b613296cc Corentin Labbe 2019-10-23 174 dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
06f751b613296cc Corentin Labbe 2019-10-23 175 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 176 goto theend_iv;
06f751b613296cc Corentin Labbe 2019-10-23 177 }
06f751b613296cc Corentin Labbe 2019-10-23 178 nr_sgd = nr_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 179 } else {
06f751b613296cc Corentin Labbe 2019-10-23 180 nr_sgs = dma_map_sg(ce->dev, areq->src, sg_nents(areq->src),
06f751b613296cc Corentin Labbe 2019-10-23 181 DMA_TO_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 182 if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
06f751b613296cc Corentin Labbe 2019-10-23 183 dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
06f751b613296cc Corentin Labbe 2019-10-23 184 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 185 goto theend_iv;
06f751b613296cc Corentin Labbe 2019-10-23 186 }
06f751b613296cc Corentin Labbe 2019-10-23 187 nr_sgd = dma_map_sg(ce->dev, areq->dst, sg_nents(areq->dst),
06f751b613296cc Corentin Labbe 2019-10-23 188 DMA_FROM_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 189 if (nr_sgd <= 0 || nr_sgd > MAX_SG) {
06f751b613296cc Corentin Labbe 2019-10-23 190 dev_err(ce->dev, "Invalid sg number %d\n", nr_sgd);
06f751b613296cc Corentin Labbe 2019-10-23 191 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 192 goto theend_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 193 }
06f751b613296cc Corentin Labbe 2019-10-23 194 }
06f751b613296cc Corentin Labbe 2019-10-23 195
06f751b613296cc Corentin Labbe 2019-10-23 196 len = areq->cryptlen;
06f751b613296cc Corentin Labbe 2019-10-23 197 for_each_sg(areq->src, sg, nr_sgs, i) {
93c7f4d357de68f Corentin Labbe 2019-11-17 198 cet->t_src[i].addr = cpu_to_le32(sg_dma_address(sg));
06f751b613296cc Corentin Labbe 2019-10-23 199 todo = min(len, sg_dma_len(sg));
93c7f4d357de68f Corentin Labbe 2019-11-17 200 cet->t_src[i].len = cpu_to_le32(todo / 4);
06f751b613296cc Corentin Labbe 2019-10-23 201 dev_dbg(ce->dev, "%s total=%u SG(%d %u off=%d) todo=%u\n", __func__,
06f751b613296cc Corentin Labbe 2019-10-23 202 areq->cryptlen, i, cet->t_src[i].len, sg->offset, todo);
06f751b613296cc Corentin Labbe 2019-10-23 203 len -= todo;
06f751b613296cc Corentin Labbe 2019-10-23 204 }
06f751b613296cc Corentin Labbe 2019-10-23 205 if (len > 0) {
06f751b613296cc Corentin Labbe 2019-10-23 206 dev_err(ce->dev, "remaining len %d\n", len);
06f751b613296cc Corentin Labbe 2019-10-23 207 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 208 goto theend_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 209 }
06f751b613296cc Corentin Labbe 2019-10-23 210
06f751b613296cc Corentin Labbe 2019-10-23 211 len = areq->cryptlen;
06f751b613296cc Corentin Labbe 2019-10-23 212 for_each_sg(areq->dst, sg, nr_sgd, i) {
93c7f4d357de68f Corentin Labbe 2019-11-17 213 cet->t_dst[i].addr = cpu_to_le32(sg_dma_address(sg));
06f751b613296cc Corentin Labbe 2019-10-23 214 todo = min(len, sg_dma_len(sg));
93c7f4d357de68f Corentin Labbe 2019-11-17 215 cet->t_dst[i].len = cpu_to_le32(todo / 4);
06f751b613296cc Corentin Labbe 2019-10-23 216 dev_dbg(ce->dev, "%s total=%u SG(%d %u off=%d) todo=%u\n", __func__,
06f751b613296cc Corentin Labbe 2019-10-23 217 areq->cryptlen, i, cet->t_dst[i].len, sg->offset, todo);
06f751b613296cc Corentin Labbe 2019-10-23 218 len -= todo;
06f751b613296cc Corentin Labbe 2019-10-23 219 }
06f751b613296cc Corentin Labbe 2019-10-23 220 if (len > 0) {
06f751b613296cc Corentin Labbe 2019-10-23 221 dev_err(ce->dev, "remaining len %d\n", len);
06f751b613296cc Corentin Labbe 2019-10-23 222 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 223 goto theend_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 224 }
06f751b613296cc Corentin Labbe 2019-10-23 225
06f751b613296cc Corentin Labbe 2019-10-23 226 chan->timeout = areq->cryptlen;
0605fa0f78266cc Corentin Labbe 2020-09-18 227 rctx->nr_sgs = nr_sgs;
0605fa0f78266cc Corentin Labbe 2020-09-18 228 rctx->nr_sgd = nr_sgd;
0605fa0f78266cc Corentin Labbe 2020-09-18 229 return 0;
06f751b613296cc Corentin Labbe 2019-10-23 230
06f751b613296cc Corentin Labbe 2019-10-23 231 theend_sgs:
06f751b613296cc Corentin Labbe 2019-10-23 232 if (areq->src == areq->dst) {
884b93c51025026 Xiang Chen 2021-03-16 233 dma_unmap_sg(ce->dev, areq->src, sg_nents(areq->src),
884b93c51025026 Xiang Chen 2021-03-16 234 DMA_BIDIRECTIONAL);
06f751b613296cc Corentin Labbe 2019-10-23 235 } else {
06f751b613296cc Corentin Labbe 2019-10-23 236 if (nr_sgs > 0)
884b93c51025026 Xiang Chen 2021-03-16 237 dma_unmap_sg(ce->dev, areq->src, sg_nents(areq->src),
884b93c51025026 Xiang Chen 2021-03-16 238 DMA_TO_DEVICE);
884b93c51025026 Xiang Chen 2021-03-16 239 dma_unmap_sg(ce->dev, areq->dst, sg_nents(areq->dst),
884b93c51025026 Xiang Chen 2021-03-16 240 DMA_FROM_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 241 }
06f751b613296cc Corentin Labbe 2019-10-23 242
06f751b613296cc Corentin Labbe 2019-10-23 243 theend_iv:
06f751b613296cc Corentin Labbe 2019-10-23 244 if (areq->iv && ivsize > 0) {
0605fa0f78266cc Corentin Labbe 2020-09-18 245 if (rctx->addr_iv)
0605fa0f78266cc Corentin Labbe 2020-09-18 246 dma_unmap_single(ce->dev, rctx->addr_iv, rctx->ivlen, DMA_TO_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 247 offset = areq->cryptlen - ivsize;
06f751b613296cc Corentin Labbe 2019-10-23 248 if (rctx->op_dir & CE_DECRYPTION) {
d0b880af8c99abc Corentin Labbe 2022-01-26 249 memcpy(areq->iv, chan->backup_iv, ivsize);
d0b880af8c99abc Corentin Labbe 2022-01-26 250 memzero_explicit(chan->backup_iv, ivsize);
06f751b613296cc Corentin Labbe 2019-10-23 251 } else {
06f751b613296cc Corentin Labbe 2019-10-23 252 scatterwalk_map_and_copy(areq->iv, areq->dst, offset,
06f751b613296cc Corentin Labbe 2019-10-23 253 ivsize, 0);
06f751b613296cc Corentin Labbe 2019-10-23 254 }
d0b880af8c99abc Corentin Labbe 2022-01-26 255 memzero_explicit(chan->bounce_iv, ivsize);
06f751b613296cc Corentin Labbe 2019-10-23 256 }
06f751b613296cc Corentin Labbe 2019-10-23 257
06f751b613296cc Corentin Labbe 2019-10-23 @258 theend_key:
0605fa0f78266cc Corentin Labbe 2020-09-18 259 dma_unmap_single(ce->dev, rctx->addr_key, op->keylen, DMA_TO_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 260
06f751b613296cc Corentin Labbe 2019-10-23 261 theend:
06f751b613296cc Corentin Labbe 2019-10-23 262 return err;
06f751b613296cc Corentin Labbe 2019-10-23 263 }
06f751b613296cc Corentin Labbe 2019-10-23 264
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Corentin Labbe <clabbe@baylibre.com>,
davem@davemloft.net, herbert@gondor.apana.org.au,
jernej.skrabec@gmail.com, mripard@kernel.org, wens@csie.org
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
linux-arm-kernel@lists.infradead.org,
linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-sunxi@lists.linux.dev, linux-sunxi@googlegroups.com
Subject: Re: [PATCH 1/8] crypto: sun8i-ce: do not allocate memory when handling requests
Date: Thu, 27 Jan 2022 12:17:24 +0800 [thread overview]
Message-ID: <202201271243.hLjdr8IB-lkp@intel.com> (raw)
In-Reply-To: <20220126210441.3661782-2-clabbe@baylibre.com>
Hi Corentin,
I love your patch! Perhaps something to improve:
[auto build test WARNING on sunxi/sunxi/for-next]
[also build test WARNING on herbert-cryptodev-2.6/master herbert-crypto-2.6/master v5.17-rc1 next-20220125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Corentin-Labbe/crypto-allwinner-various-improvments/20220127-050556
base: https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git sunxi/for-next
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20220127/202201271243.hLjdr8IB-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 2a1b7aa016c0f4b5598806205bdfbab1ea2d92c4)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/0day-ci/linux/commit/d0b880af8c99abcd0f36463b82c92d71024408de
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Corentin-Labbe/crypto-allwinner-various-improvments/20220127-050556
git checkout d0b880af8c99abcd0f36463b82c92d71024408de
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/crypto/allwinner/sun8i-ce/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c:258:1: warning: unused label 'theend_key' [-Wunused-label]
theend_key:
^~~~~~~~~~~
1 warning generated.
vim +/theend_key +258 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
06f751b613296cc Corentin Labbe 2019-10-23 108
06f751b613296cc Corentin Labbe 2019-10-23 109 flow = rctx->flow;
06f751b613296cc Corentin Labbe 2019-10-23 110
06f751b613296cc Corentin Labbe 2019-10-23 111 chan = &ce->chanlist[flow];
06f751b613296cc Corentin Labbe 2019-10-23 112
06f751b613296cc Corentin Labbe 2019-10-23 113 cet = chan->tl;
06f751b613296cc Corentin Labbe 2019-10-23 114 memset(cet, 0, sizeof(struct ce_task));
06f751b613296cc Corentin Labbe 2019-10-23 115
93c7f4d357de68f Corentin Labbe 2019-11-17 116 cet->t_id = cpu_to_le32(flow);
93c7f4d357de68f Corentin Labbe 2019-11-17 117 common = ce->variant->alg_cipher[algt->ce_algo_id];
93c7f4d357de68f Corentin Labbe 2019-11-17 118 common |= rctx->op_dir | CE_COMM_INT;
93c7f4d357de68f Corentin Labbe 2019-11-17 119 cet->t_common_ctl = cpu_to_le32(common);
06f751b613296cc Corentin Labbe 2019-10-23 120 /* CTS and recent CE (H6) need length in bytes, in word otherwise */
6b4f76c2cd9e6c3 Corentin Labbe 2020-09-18 121 if (ce->variant->cipher_t_dlen_in_bytes)
93c7f4d357de68f Corentin Labbe 2019-11-17 122 cet->t_dlen = cpu_to_le32(areq->cryptlen);
93c7f4d357de68f Corentin Labbe 2019-11-17 123 else
93c7f4d357de68f Corentin Labbe 2019-11-17 124 cet->t_dlen = cpu_to_le32(areq->cryptlen / 4);
06f751b613296cc Corentin Labbe 2019-10-23 125
93c7f4d357de68f Corentin Labbe 2019-11-17 126 sym = ce->variant->op_mode[algt->ce_blockmode];
06f751b613296cc Corentin Labbe 2019-10-23 127 len = op->keylen;
06f751b613296cc Corentin Labbe 2019-10-23 128 switch (len) {
06f751b613296cc Corentin Labbe 2019-10-23 129 case 128 / 8:
93c7f4d357de68f Corentin Labbe 2019-11-17 130 sym |= CE_AES_128BITS;
06f751b613296cc Corentin Labbe 2019-10-23 131 break;
06f751b613296cc Corentin Labbe 2019-10-23 132 case 192 / 8:
93c7f4d357de68f Corentin Labbe 2019-11-17 133 sym |= CE_AES_192BITS;
06f751b613296cc Corentin Labbe 2019-10-23 134 break;
06f751b613296cc Corentin Labbe 2019-10-23 135 case 256 / 8:
93c7f4d357de68f Corentin Labbe 2019-11-17 136 sym |= CE_AES_256BITS;
06f751b613296cc Corentin Labbe 2019-10-23 137 break;
06f751b613296cc Corentin Labbe 2019-10-23 138 }
06f751b613296cc Corentin Labbe 2019-10-23 139
93c7f4d357de68f Corentin Labbe 2019-11-17 140 cet->t_sym_ctl = cpu_to_le32(sym);
06f751b613296cc Corentin Labbe 2019-10-23 141 cet->t_asym_ctl = 0;
06f751b613296cc Corentin Labbe 2019-10-23 142
0605fa0f78266cc Corentin Labbe 2020-09-18 143 rctx->addr_key = dma_map_single(ce->dev, op->key, op->keylen, DMA_TO_DEVICE);
0605fa0f78266cc Corentin Labbe 2020-09-18 144 if (dma_mapping_error(ce->dev, rctx->addr_key)) {
06f751b613296cc Corentin Labbe 2019-10-23 145 dev_err(ce->dev, "Cannot DMA MAP KEY\n");
06f751b613296cc Corentin Labbe 2019-10-23 146 err = -EFAULT;
06f751b613296cc Corentin Labbe 2019-10-23 147 goto theend;
06f751b613296cc Corentin Labbe 2019-10-23 148 }
0605fa0f78266cc Corentin Labbe 2020-09-18 149 cet->t_key = cpu_to_le32(rctx->addr_key);
06f751b613296cc Corentin Labbe 2019-10-23 150
06f751b613296cc Corentin Labbe 2019-10-23 151 ivsize = crypto_skcipher_ivsize(tfm);
06f751b613296cc Corentin Labbe 2019-10-23 152 if (areq->iv && crypto_skcipher_ivsize(tfm) > 0) {
a216f8d540cf132 Corentin Labbe 2020-09-18 153 rctx->ivlen = ivsize;
06f751b613296cc Corentin Labbe 2019-10-23 154 if (rctx->op_dir & CE_DECRYPTION) {
06f751b613296cc Corentin Labbe 2019-10-23 155 offset = areq->cryptlen - ivsize;
d0b880af8c99abc Corentin Labbe 2022-01-26 156 scatterwalk_map_and_copy(chan->backup_iv, areq->src,
a216f8d540cf132 Corentin Labbe 2020-09-18 157 offset, ivsize, 0);
06f751b613296cc Corentin Labbe 2019-10-23 158 }
d0b880af8c99abc Corentin Labbe 2022-01-26 159 memcpy(chan->bounce_iv, areq->iv, ivsize);
d0b880af8c99abc Corentin Labbe 2022-01-26 160 rctx->addr_iv = dma_map_single(ce->dev, chan->bounce_iv, rctx->ivlen,
93c7f4d357de68f Corentin Labbe 2019-11-17 161 DMA_TO_DEVICE);
0605fa0f78266cc Corentin Labbe 2020-09-18 162 if (dma_mapping_error(ce->dev, rctx->addr_iv)) {
06f751b613296cc Corentin Labbe 2019-10-23 163 dev_err(ce->dev, "Cannot DMA MAP IV\n");
06f751b613296cc Corentin Labbe 2019-10-23 164 err = -ENOMEM;
06f751b613296cc Corentin Labbe 2019-10-23 165 goto theend_iv;
06f751b613296cc Corentin Labbe 2019-10-23 166 }
0605fa0f78266cc Corentin Labbe 2020-09-18 167 cet->t_iv = cpu_to_le32(rctx->addr_iv);
06f751b613296cc Corentin Labbe 2019-10-23 168 }
06f751b613296cc Corentin Labbe 2019-10-23 169
06f751b613296cc Corentin Labbe 2019-10-23 170 if (areq->src == areq->dst) {
06f751b613296cc Corentin Labbe 2019-10-23 171 nr_sgs = dma_map_sg(ce->dev, areq->src, sg_nents(areq->src),
06f751b613296cc Corentin Labbe 2019-10-23 172 DMA_BIDIRECTIONAL);
06f751b613296cc Corentin Labbe 2019-10-23 173 if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
06f751b613296cc Corentin Labbe 2019-10-23 174 dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
06f751b613296cc Corentin Labbe 2019-10-23 175 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 176 goto theend_iv;
06f751b613296cc Corentin Labbe 2019-10-23 177 }
06f751b613296cc Corentin Labbe 2019-10-23 178 nr_sgd = nr_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 179 } else {
06f751b613296cc Corentin Labbe 2019-10-23 180 nr_sgs = dma_map_sg(ce->dev, areq->src, sg_nents(areq->src),
06f751b613296cc Corentin Labbe 2019-10-23 181 DMA_TO_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 182 if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
06f751b613296cc Corentin Labbe 2019-10-23 183 dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
06f751b613296cc Corentin Labbe 2019-10-23 184 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 185 goto theend_iv;
06f751b613296cc Corentin Labbe 2019-10-23 186 }
06f751b613296cc Corentin Labbe 2019-10-23 187 nr_sgd = dma_map_sg(ce->dev, areq->dst, sg_nents(areq->dst),
06f751b613296cc Corentin Labbe 2019-10-23 188 DMA_FROM_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 189 if (nr_sgd <= 0 || nr_sgd > MAX_SG) {
06f751b613296cc Corentin Labbe 2019-10-23 190 dev_err(ce->dev, "Invalid sg number %d\n", nr_sgd);
06f751b613296cc Corentin Labbe 2019-10-23 191 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 192 goto theend_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 193 }
06f751b613296cc Corentin Labbe 2019-10-23 194 }
06f751b613296cc Corentin Labbe 2019-10-23 195
06f751b613296cc Corentin Labbe 2019-10-23 196 len = areq->cryptlen;
06f751b613296cc Corentin Labbe 2019-10-23 197 for_each_sg(areq->src, sg, nr_sgs, i) {
93c7f4d357de68f Corentin Labbe 2019-11-17 198 cet->t_src[i].addr = cpu_to_le32(sg_dma_address(sg));
06f751b613296cc Corentin Labbe 2019-10-23 199 todo = min(len, sg_dma_len(sg));
93c7f4d357de68f Corentin Labbe 2019-11-17 200 cet->t_src[i].len = cpu_to_le32(todo / 4);
06f751b613296cc Corentin Labbe 2019-10-23 201 dev_dbg(ce->dev, "%s total=%u SG(%d %u off=%d) todo=%u\n", __func__,
06f751b613296cc Corentin Labbe 2019-10-23 202 areq->cryptlen, i, cet->t_src[i].len, sg->offset, todo);
06f751b613296cc Corentin Labbe 2019-10-23 203 len -= todo;
06f751b613296cc Corentin Labbe 2019-10-23 204 }
06f751b613296cc Corentin Labbe 2019-10-23 205 if (len > 0) {
06f751b613296cc Corentin Labbe 2019-10-23 206 dev_err(ce->dev, "remaining len %d\n", len);
06f751b613296cc Corentin Labbe 2019-10-23 207 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 208 goto theend_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 209 }
06f751b613296cc Corentin Labbe 2019-10-23 210
06f751b613296cc Corentin Labbe 2019-10-23 211 len = areq->cryptlen;
06f751b613296cc Corentin Labbe 2019-10-23 212 for_each_sg(areq->dst, sg, nr_sgd, i) {
93c7f4d357de68f Corentin Labbe 2019-11-17 213 cet->t_dst[i].addr = cpu_to_le32(sg_dma_address(sg));
06f751b613296cc Corentin Labbe 2019-10-23 214 todo = min(len, sg_dma_len(sg));
93c7f4d357de68f Corentin Labbe 2019-11-17 215 cet->t_dst[i].len = cpu_to_le32(todo / 4);
06f751b613296cc Corentin Labbe 2019-10-23 216 dev_dbg(ce->dev, "%s total=%u SG(%d %u off=%d) todo=%u\n", __func__,
06f751b613296cc Corentin Labbe 2019-10-23 217 areq->cryptlen, i, cet->t_dst[i].len, sg->offset, todo);
06f751b613296cc Corentin Labbe 2019-10-23 218 len -= todo;
06f751b613296cc Corentin Labbe 2019-10-23 219 }
06f751b613296cc Corentin Labbe 2019-10-23 220 if (len > 0) {
06f751b613296cc Corentin Labbe 2019-10-23 221 dev_err(ce->dev, "remaining len %d\n", len);
06f751b613296cc Corentin Labbe 2019-10-23 222 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 223 goto theend_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 224 }
06f751b613296cc Corentin Labbe 2019-10-23 225
06f751b613296cc Corentin Labbe 2019-10-23 226 chan->timeout = areq->cryptlen;
0605fa0f78266cc Corentin Labbe 2020-09-18 227 rctx->nr_sgs = nr_sgs;
0605fa0f78266cc Corentin Labbe 2020-09-18 228 rctx->nr_sgd = nr_sgd;
0605fa0f78266cc Corentin Labbe 2020-09-18 229 return 0;
06f751b613296cc Corentin Labbe 2019-10-23 230
06f751b613296cc Corentin Labbe 2019-10-23 231 theend_sgs:
06f751b613296cc Corentin Labbe 2019-10-23 232 if (areq->src == areq->dst) {
884b93c51025026 Xiang Chen 2021-03-16 233 dma_unmap_sg(ce->dev, areq->src, sg_nents(areq->src),
884b93c51025026 Xiang Chen 2021-03-16 234 DMA_BIDIRECTIONAL);
06f751b613296cc Corentin Labbe 2019-10-23 235 } else {
06f751b613296cc Corentin Labbe 2019-10-23 236 if (nr_sgs > 0)
884b93c51025026 Xiang Chen 2021-03-16 237 dma_unmap_sg(ce->dev, areq->src, sg_nents(areq->src),
884b93c51025026 Xiang Chen 2021-03-16 238 DMA_TO_DEVICE);
884b93c51025026 Xiang Chen 2021-03-16 239 dma_unmap_sg(ce->dev, areq->dst, sg_nents(areq->dst),
884b93c51025026 Xiang Chen 2021-03-16 240 DMA_FROM_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 241 }
06f751b613296cc Corentin Labbe 2019-10-23 242
06f751b613296cc Corentin Labbe 2019-10-23 243 theend_iv:
06f751b613296cc Corentin Labbe 2019-10-23 244 if (areq->iv && ivsize > 0) {
0605fa0f78266cc Corentin Labbe 2020-09-18 245 if (rctx->addr_iv)
0605fa0f78266cc Corentin Labbe 2020-09-18 246 dma_unmap_single(ce->dev, rctx->addr_iv, rctx->ivlen, DMA_TO_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 247 offset = areq->cryptlen - ivsize;
06f751b613296cc Corentin Labbe 2019-10-23 248 if (rctx->op_dir & CE_DECRYPTION) {
d0b880af8c99abc Corentin Labbe 2022-01-26 249 memcpy(areq->iv, chan->backup_iv, ivsize);
d0b880af8c99abc Corentin Labbe 2022-01-26 250 memzero_explicit(chan->backup_iv, ivsize);
06f751b613296cc Corentin Labbe 2019-10-23 251 } else {
06f751b613296cc Corentin Labbe 2019-10-23 252 scatterwalk_map_and_copy(areq->iv, areq->dst, offset,
06f751b613296cc Corentin Labbe 2019-10-23 253 ivsize, 0);
06f751b613296cc Corentin Labbe 2019-10-23 254 }
d0b880af8c99abc Corentin Labbe 2022-01-26 255 memzero_explicit(chan->bounce_iv, ivsize);
06f751b613296cc Corentin Labbe 2019-10-23 256 }
06f751b613296cc Corentin Labbe 2019-10-23 257
06f751b613296cc Corentin Labbe 2019-10-23 @258 theend_key:
0605fa0f78266cc Corentin Labbe 2020-09-18 259 dma_unmap_single(ce->dev, rctx->addr_key, op->keylen, DMA_TO_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 260
06f751b613296cc Corentin Labbe 2019-10-23 261 theend:
06f751b613296cc Corentin Labbe 2019-10-23 262 return err;
06f751b613296cc Corentin Labbe 2019-10-23 263 }
06f751b613296cc Corentin Labbe 2019-10-23 264
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 1/8] crypto: sun8i-ce: do not allocate memory when handling requests
Date: Thu, 27 Jan 2022 12:17:24 +0800 [thread overview]
Message-ID: <202201271243.hLjdr8IB-lkp@intel.com> (raw)
In-Reply-To: <20220126210441.3661782-2-clabbe@baylibre.com>
[-- Attachment #1: Type: text/plain, Size: 14184 bytes --]
Hi Corentin,
I love your patch! Perhaps something to improve:
[auto build test WARNING on sunxi/sunxi/for-next]
[also build test WARNING on herbert-cryptodev-2.6/master herbert-crypto-2.6/master v5.17-rc1 next-20220125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Corentin-Labbe/crypto-allwinner-various-improvments/20220127-050556
base: https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git sunxi/for-next
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20220127/202201271243.hLjdr8IB-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 2a1b7aa016c0f4b5598806205bdfbab1ea2d92c4)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/0day-ci/linux/commit/d0b880af8c99abcd0f36463b82c92d71024408de
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Corentin-Labbe/crypto-allwinner-various-improvments/20220127-050556
git checkout d0b880af8c99abcd0f36463b82c92d71024408de
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/crypto/allwinner/sun8i-ce/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c:258:1: warning: unused label 'theend_key' [-Wunused-label]
theend_key:
^~~~~~~~~~~
1 warning generated.
vim +/theend_key +258 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
06f751b613296cc Corentin Labbe 2019-10-23 108
06f751b613296cc Corentin Labbe 2019-10-23 109 flow = rctx->flow;
06f751b613296cc Corentin Labbe 2019-10-23 110
06f751b613296cc Corentin Labbe 2019-10-23 111 chan = &ce->chanlist[flow];
06f751b613296cc Corentin Labbe 2019-10-23 112
06f751b613296cc Corentin Labbe 2019-10-23 113 cet = chan->tl;
06f751b613296cc Corentin Labbe 2019-10-23 114 memset(cet, 0, sizeof(struct ce_task));
06f751b613296cc Corentin Labbe 2019-10-23 115
93c7f4d357de68f Corentin Labbe 2019-11-17 116 cet->t_id = cpu_to_le32(flow);
93c7f4d357de68f Corentin Labbe 2019-11-17 117 common = ce->variant->alg_cipher[algt->ce_algo_id];
93c7f4d357de68f Corentin Labbe 2019-11-17 118 common |= rctx->op_dir | CE_COMM_INT;
93c7f4d357de68f Corentin Labbe 2019-11-17 119 cet->t_common_ctl = cpu_to_le32(common);
06f751b613296cc Corentin Labbe 2019-10-23 120 /* CTS and recent CE (H6) need length in bytes, in word otherwise */
6b4f76c2cd9e6c3 Corentin Labbe 2020-09-18 121 if (ce->variant->cipher_t_dlen_in_bytes)
93c7f4d357de68f Corentin Labbe 2019-11-17 122 cet->t_dlen = cpu_to_le32(areq->cryptlen);
93c7f4d357de68f Corentin Labbe 2019-11-17 123 else
93c7f4d357de68f Corentin Labbe 2019-11-17 124 cet->t_dlen = cpu_to_le32(areq->cryptlen / 4);
06f751b613296cc Corentin Labbe 2019-10-23 125
93c7f4d357de68f Corentin Labbe 2019-11-17 126 sym = ce->variant->op_mode[algt->ce_blockmode];
06f751b613296cc Corentin Labbe 2019-10-23 127 len = op->keylen;
06f751b613296cc Corentin Labbe 2019-10-23 128 switch (len) {
06f751b613296cc Corentin Labbe 2019-10-23 129 case 128 / 8:
93c7f4d357de68f Corentin Labbe 2019-11-17 130 sym |= CE_AES_128BITS;
06f751b613296cc Corentin Labbe 2019-10-23 131 break;
06f751b613296cc Corentin Labbe 2019-10-23 132 case 192 / 8:
93c7f4d357de68f Corentin Labbe 2019-11-17 133 sym |= CE_AES_192BITS;
06f751b613296cc Corentin Labbe 2019-10-23 134 break;
06f751b613296cc Corentin Labbe 2019-10-23 135 case 256 / 8:
93c7f4d357de68f Corentin Labbe 2019-11-17 136 sym |= CE_AES_256BITS;
06f751b613296cc Corentin Labbe 2019-10-23 137 break;
06f751b613296cc Corentin Labbe 2019-10-23 138 }
06f751b613296cc Corentin Labbe 2019-10-23 139
93c7f4d357de68f Corentin Labbe 2019-11-17 140 cet->t_sym_ctl = cpu_to_le32(sym);
06f751b613296cc Corentin Labbe 2019-10-23 141 cet->t_asym_ctl = 0;
06f751b613296cc Corentin Labbe 2019-10-23 142
0605fa0f78266cc Corentin Labbe 2020-09-18 143 rctx->addr_key = dma_map_single(ce->dev, op->key, op->keylen, DMA_TO_DEVICE);
0605fa0f78266cc Corentin Labbe 2020-09-18 144 if (dma_mapping_error(ce->dev, rctx->addr_key)) {
06f751b613296cc Corentin Labbe 2019-10-23 145 dev_err(ce->dev, "Cannot DMA MAP KEY\n");
06f751b613296cc Corentin Labbe 2019-10-23 146 err = -EFAULT;
06f751b613296cc Corentin Labbe 2019-10-23 147 goto theend;
06f751b613296cc Corentin Labbe 2019-10-23 148 }
0605fa0f78266cc Corentin Labbe 2020-09-18 149 cet->t_key = cpu_to_le32(rctx->addr_key);
06f751b613296cc Corentin Labbe 2019-10-23 150
06f751b613296cc Corentin Labbe 2019-10-23 151 ivsize = crypto_skcipher_ivsize(tfm);
06f751b613296cc Corentin Labbe 2019-10-23 152 if (areq->iv && crypto_skcipher_ivsize(tfm) > 0) {
a216f8d540cf132 Corentin Labbe 2020-09-18 153 rctx->ivlen = ivsize;
06f751b613296cc Corentin Labbe 2019-10-23 154 if (rctx->op_dir & CE_DECRYPTION) {
06f751b613296cc Corentin Labbe 2019-10-23 155 offset = areq->cryptlen - ivsize;
d0b880af8c99abc Corentin Labbe 2022-01-26 156 scatterwalk_map_and_copy(chan->backup_iv, areq->src,
a216f8d540cf132 Corentin Labbe 2020-09-18 157 offset, ivsize, 0);
06f751b613296cc Corentin Labbe 2019-10-23 158 }
d0b880af8c99abc Corentin Labbe 2022-01-26 159 memcpy(chan->bounce_iv, areq->iv, ivsize);
d0b880af8c99abc Corentin Labbe 2022-01-26 160 rctx->addr_iv = dma_map_single(ce->dev, chan->bounce_iv, rctx->ivlen,
93c7f4d357de68f Corentin Labbe 2019-11-17 161 DMA_TO_DEVICE);
0605fa0f78266cc Corentin Labbe 2020-09-18 162 if (dma_mapping_error(ce->dev, rctx->addr_iv)) {
06f751b613296cc Corentin Labbe 2019-10-23 163 dev_err(ce->dev, "Cannot DMA MAP IV\n");
06f751b613296cc Corentin Labbe 2019-10-23 164 err = -ENOMEM;
06f751b613296cc Corentin Labbe 2019-10-23 165 goto theend_iv;
06f751b613296cc Corentin Labbe 2019-10-23 166 }
0605fa0f78266cc Corentin Labbe 2020-09-18 167 cet->t_iv = cpu_to_le32(rctx->addr_iv);
06f751b613296cc Corentin Labbe 2019-10-23 168 }
06f751b613296cc Corentin Labbe 2019-10-23 169
06f751b613296cc Corentin Labbe 2019-10-23 170 if (areq->src == areq->dst) {
06f751b613296cc Corentin Labbe 2019-10-23 171 nr_sgs = dma_map_sg(ce->dev, areq->src, sg_nents(areq->src),
06f751b613296cc Corentin Labbe 2019-10-23 172 DMA_BIDIRECTIONAL);
06f751b613296cc Corentin Labbe 2019-10-23 173 if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
06f751b613296cc Corentin Labbe 2019-10-23 174 dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
06f751b613296cc Corentin Labbe 2019-10-23 175 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 176 goto theend_iv;
06f751b613296cc Corentin Labbe 2019-10-23 177 }
06f751b613296cc Corentin Labbe 2019-10-23 178 nr_sgd = nr_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 179 } else {
06f751b613296cc Corentin Labbe 2019-10-23 180 nr_sgs = dma_map_sg(ce->dev, areq->src, sg_nents(areq->src),
06f751b613296cc Corentin Labbe 2019-10-23 181 DMA_TO_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 182 if (nr_sgs <= 0 || nr_sgs > MAX_SG) {
06f751b613296cc Corentin Labbe 2019-10-23 183 dev_err(ce->dev, "Invalid sg number %d\n", nr_sgs);
06f751b613296cc Corentin Labbe 2019-10-23 184 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 185 goto theend_iv;
06f751b613296cc Corentin Labbe 2019-10-23 186 }
06f751b613296cc Corentin Labbe 2019-10-23 187 nr_sgd = dma_map_sg(ce->dev, areq->dst, sg_nents(areq->dst),
06f751b613296cc Corentin Labbe 2019-10-23 188 DMA_FROM_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 189 if (nr_sgd <= 0 || nr_sgd > MAX_SG) {
06f751b613296cc Corentin Labbe 2019-10-23 190 dev_err(ce->dev, "Invalid sg number %d\n", nr_sgd);
06f751b613296cc Corentin Labbe 2019-10-23 191 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 192 goto theend_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 193 }
06f751b613296cc Corentin Labbe 2019-10-23 194 }
06f751b613296cc Corentin Labbe 2019-10-23 195
06f751b613296cc Corentin Labbe 2019-10-23 196 len = areq->cryptlen;
06f751b613296cc Corentin Labbe 2019-10-23 197 for_each_sg(areq->src, sg, nr_sgs, i) {
93c7f4d357de68f Corentin Labbe 2019-11-17 198 cet->t_src[i].addr = cpu_to_le32(sg_dma_address(sg));
06f751b613296cc Corentin Labbe 2019-10-23 199 todo = min(len, sg_dma_len(sg));
93c7f4d357de68f Corentin Labbe 2019-11-17 200 cet->t_src[i].len = cpu_to_le32(todo / 4);
06f751b613296cc Corentin Labbe 2019-10-23 201 dev_dbg(ce->dev, "%s total=%u SG(%d %u off=%d) todo=%u\n", __func__,
06f751b613296cc Corentin Labbe 2019-10-23 202 areq->cryptlen, i, cet->t_src[i].len, sg->offset, todo);
06f751b613296cc Corentin Labbe 2019-10-23 203 len -= todo;
06f751b613296cc Corentin Labbe 2019-10-23 204 }
06f751b613296cc Corentin Labbe 2019-10-23 205 if (len > 0) {
06f751b613296cc Corentin Labbe 2019-10-23 206 dev_err(ce->dev, "remaining len %d\n", len);
06f751b613296cc Corentin Labbe 2019-10-23 207 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 208 goto theend_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 209 }
06f751b613296cc Corentin Labbe 2019-10-23 210
06f751b613296cc Corentin Labbe 2019-10-23 211 len = areq->cryptlen;
06f751b613296cc Corentin Labbe 2019-10-23 212 for_each_sg(areq->dst, sg, nr_sgd, i) {
93c7f4d357de68f Corentin Labbe 2019-11-17 213 cet->t_dst[i].addr = cpu_to_le32(sg_dma_address(sg));
06f751b613296cc Corentin Labbe 2019-10-23 214 todo = min(len, sg_dma_len(sg));
93c7f4d357de68f Corentin Labbe 2019-11-17 215 cet->t_dst[i].len = cpu_to_le32(todo / 4);
06f751b613296cc Corentin Labbe 2019-10-23 216 dev_dbg(ce->dev, "%s total=%u SG(%d %u off=%d) todo=%u\n", __func__,
06f751b613296cc Corentin Labbe 2019-10-23 217 areq->cryptlen, i, cet->t_dst[i].len, sg->offset, todo);
06f751b613296cc Corentin Labbe 2019-10-23 218 len -= todo;
06f751b613296cc Corentin Labbe 2019-10-23 219 }
06f751b613296cc Corentin Labbe 2019-10-23 220 if (len > 0) {
06f751b613296cc Corentin Labbe 2019-10-23 221 dev_err(ce->dev, "remaining len %d\n", len);
06f751b613296cc Corentin Labbe 2019-10-23 222 err = -EINVAL;
06f751b613296cc Corentin Labbe 2019-10-23 223 goto theend_sgs;
06f751b613296cc Corentin Labbe 2019-10-23 224 }
06f751b613296cc Corentin Labbe 2019-10-23 225
06f751b613296cc Corentin Labbe 2019-10-23 226 chan->timeout = areq->cryptlen;
0605fa0f78266cc Corentin Labbe 2020-09-18 227 rctx->nr_sgs = nr_sgs;
0605fa0f78266cc Corentin Labbe 2020-09-18 228 rctx->nr_sgd = nr_sgd;
0605fa0f78266cc Corentin Labbe 2020-09-18 229 return 0;
06f751b613296cc Corentin Labbe 2019-10-23 230
06f751b613296cc Corentin Labbe 2019-10-23 231 theend_sgs:
06f751b613296cc Corentin Labbe 2019-10-23 232 if (areq->src == areq->dst) {
884b93c51025026 Xiang Chen 2021-03-16 233 dma_unmap_sg(ce->dev, areq->src, sg_nents(areq->src),
884b93c51025026 Xiang Chen 2021-03-16 234 DMA_BIDIRECTIONAL);
06f751b613296cc Corentin Labbe 2019-10-23 235 } else {
06f751b613296cc Corentin Labbe 2019-10-23 236 if (nr_sgs > 0)
884b93c51025026 Xiang Chen 2021-03-16 237 dma_unmap_sg(ce->dev, areq->src, sg_nents(areq->src),
884b93c51025026 Xiang Chen 2021-03-16 238 DMA_TO_DEVICE);
884b93c51025026 Xiang Chen 2021-03-16 239 dma_unmap_sg(ce->dev, areq->dst, sg_nents(areq->dst),
884b93c51025026 Xiang Chen 2021-03-16 240 DMA_FROM_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 241 }
06f751b613296cc Corentin Labbe 2019-10-23 242
06f751b613296cc Corentin Labbe 2019-10-23 243 theend_iv:
06f751b613296cc Corentin Labbe 2019-10-23 244 if (areq->iv && ivsize > 0) {
0605fa0f78266cc Corentin Labbe 2020-09-18 245 if (rctx->addr_iv)
0605fa0f78266cc Corentin Labbe 2020-09-18 246 dma_unmap_single(ce->dev, rctx->addr_iv, rctx->ivlen, DMA_TO_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 247 offset = areq->cryptlen - ivsize;
06f751b613296cc Corentin Labbe 2019-10-23 248 if (rctx->op_dir & CE_DECRYPTION) {
d0b880af8c99abc Corentin Labbe 2022-01-26 249 memcpy(areq->iv, chan->backup_iv, ivsize);
d0b880af8c99abc Corentin Labbe 2022-01-26 250 memzero_explicit(chan->backup_iv, ivsize);
06f751b613296cc Corentin Labbe 2019-10-23 251 } else {
06f751b613296cc Corentin Labbe 2019-10-23 252 scatterwalk_map_and_copy(areq->iv, areq->dst, offset,
06f751b613296cc Corentin Labbe 2019-10-23 253 ivsize, 0);
06f751b613296cc Corentin Labbe 2019-10-23 254 }
d0b880af8c99abc Corentin Labbe 2022-01-26 255 memzero_explicit(chan->bounce_iv, ivsize);
06f751b613296cc Corentin Labbe 2019-10-23 256 }
06f751b613296cc Corentin Labbe 2019-10-23 257
06f751b613296cc Corentin Labbe 2019-10-23 @258 theend_key:
0605fa0f78266cc Corentin Labbe 2020-09-18 259 dma_unmap_single(ce->dev, rctx->addr_key, op->keylen, DMA_TO_DEVICE);
06f751b613296cc Corentin Labbe 2019-10-23 260
06f751b613296cc Corentin Labbe 2019-10-23 261 theend:
06f751b613296cc Corentin Labbe 2019-10-23 262 return err;
06f751b613296cc Corentin Labbe 2019-10-23 263 }
06f751b613296cc Corentin Labbe 2019-10-23 264
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
next prev parent reply other threads:[~2022-01-27 4:17 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-26 21:04 [PATCH 0/8] crypto: allwinner: various improvments Corentin Labbe
2022-01-26 21:04 ` Corentin Labbe
2022-01-26 21:04 ` [PATCH 1/8] crypto: sun8i-ce: do not allocate memory when handling requests Corentin Labbe
2022-01-26 21:04 ` Corentin Labbe
2022-01-27 4:17 ` kernel test robot [this message]
2022-01-27 4:17 ` kernel test robot
2022-01-27 4:17 ` kernel test robot
2022-01-26 21:04 ` [PATCH 2/8] crypto: sun4i-ss: do not allocate backup IV on requests Corentin Labbe
2022-01-26 21:04 ` Corentin Labbe
2022-01-26 21:04 ` [PATCH 3/8] crypto: sun8i-ss: handle zero sized sg Corentin Labbe
2022-01-26 21:04 ` Corentin Labbe
2022-01-26 21:04 ` [PATCH 4/8] crypto: sun8i-ss: do not allocate memory when handling hash requests Corentin Labbe
2022-01-26 21:04 ` Corentin Labbe
2022-01-26 21:04 ` [PATCH 5/8] crypto: sun8i-ss: do not zeroize all pad Corentin Labbe
2022-01-26 21:04 ` Corentin Labbe
2022-01-26 21:04 ` [PATCH 6/8] crypto: sun8i-ss: remove redundant test Corentin Labbe
2022-01-26 21:04 ` Corentin Labbe
2022-01-26 21:04 ` [PATCH 7/8] crypto: sun8i-ss: test error before assigning Corentin Labbe
2022-01-26 21:04 ` Corentin Labbe
2022-01-26 21:04 ` [PATCH 8/8] crypto: sun8i-ss: handle requests if last block is not modulo 64 Corentin Labbe
2022-01-26 21:04 ` Corentin Labbe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202201271243.hLjdr8IB-lkp@intel.com \
--to=lkp@intel.com \
--cc=clabbe@baylibre.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=jernej.skrabec@gmail.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sunxi@googlegroups.com \
--cc=linux-sunxi@lists.linux.dev \
--cc=llvm@lists.linux.dev \
--cc=mripard@kernel.org \
--cc=wens@csie.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.