[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