2020-08-21 03:50:05

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH RESEND 1/9] crypto: caam/jr - add fallback for XTS with more than 8B IV

On Thu, Aug 06, 2020 at 07:35:43PM +0300, Andrei Botila wrote:
>
> +static bool xts_skcipher_ivsize(struct skcipher_request *req)
> +{
> + struct crypto_skcipher *skcipher = crypto_skcipher_reqtfm(req);
> + unsigned int ivsize = crypto_skcipher_ivsize(skcipher);
> + u64 size = 0;
> +
> + if (IS_ALIGNED((unsigned long)req->iv, __alignof__(u64)))
> + size = *(u64 *)(req->iv + (ivsize / 2));
> + else
> + size = get_unaligned((u64 *)(req->iv + (ivsize / 2)));
> +
> + return !!size;
> +}

Just go with the get_unaligned unconditionally.

Cheers,
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt


2020-09-08 10:38:12

by Horia Geanta

[permalink] [raw]
Subject: Re: [PATCH RESEND 1/9] crypto: caam/jr - add fallback for XTS with more than 8B IV

On 8/21/2020 6:47 AM, Herbert Xu wrote:
> On Thu, Aug 06, 2020 at 07:35:43PM +0300, Andrei Botila wrote:
>>
>> +static bool xts_skcipher_ivsize(struct skcipher_request *req)
>> +{
>> + struct crypto_skcipher *skcipher = crypto_skcipher_reqtfm(req);
>> + unsigned int ivsize = crypto_skcipher_ivsize(skcipher);
>> + u64 size = 0;
>> +
>> + if (IS_ALIGNED((unsigned long)req->iv, __alignof__(u64)))
>> + size = *(u64 *)(req->iv + (ivsize / 2));
>> + else
>> + size = get_unaligned((u64 *)(req->iv + (ivsize / 2)));
>> +
>> + return !!size;
>> +}
>
> Just go with the get_unaligned unconditionally.
>
Won't this lead to sub-optimal code for ARMv7
in case the IV is aligned?

Thanks,
Horia