[PATCH 2/2] crypto: mxs_dcp: Use sg_mapping_iter to copy data

Sean Anderson sean.anderson at seco.com
Thu Jun 24 07:58:48 PDT 2021



On 6/24/21 2:56 AM, Herbert Xu wrote:
 > On Fri, Jun 18, 2021 at 05:14:11PM -0400, Sean Anderson wrote:
 >> This uses the sg_miter_*() functions to copy data, instead of doing it
 >> ourselves. Using sg_copy_buffer() would be better, but this way we don't
 >> have to keep traversing the beginning of the scatterlist every time we
 >> do another copy.
 >>
 >> In addition to reducing code size, this fixes the following oops
 >> resulting from failing to kmap the page:
 >
 > Thanks for the patch.  Just a minor nit:
 >
 >> @@ -365,25 +364,13 @@ static int mxs_dcp_aes_block_crypt(struct crypto_async_request *arq)
 >>
 >>  				out_tmp = out_buf;
 >>  				last_out_len = actx->fill;
 >> -				while (dst && actx->fill) {
 >> -					if (!split) {
 >> -						dst_buf = sg_virt(dst);
 >> -						dst_off = 0;
 >> -					}
 >> -					rem = min(sg_dma_len(dst) - dst_off,
 >> -						  actx->fill);
 >> -
 >> -					memcpy(dst_buf + dst_off, out_tmp, rem);
 >> +
 >> +				while (sg_miter_next(&dst_iter) && actx->fill) {
 >> +					rem = min(dst_iter.length, actx->fill);
 >
 > This comparison generates a sparse warning due to conflicting types,
 > please fix this and resubmit.

What exactly is the warning here? dst_iter.length is a size_t, and
actx->fill is a u32. So fill will be converted to a size_t before the
comparison, which is lossless.

--Sean



More information about the linux-arm-kernel mailing list