On Thu, Oct 17, 2019 at 09:09:01PM +0200, Ard Biesheuvel wrote:
> +void chacha_crypt_arch(u32 *state, u8 *dst, const u8 *src, unsigned int 
> bytes,
> +                    int nrounds)
> +{
> +     state = PTR_ALIGN(state, CHACHA_STATE_ALIGN);
> +
> +     if (!static_branch_likely(&chacha_use_simd) || !crypto_simd_usable() ||
> +         bytes <= CHACHA_BLOCK_SIZE)
> +             return chacha_crypt_generic(state, dst, src, bytes, nrounds);
> +
> +     kernel_fpu_begin();
> +     chacha_dosimd(state, dst, src, bytes, nrounds);
> +     kernel_fpu_end();
> +}
> +EXPORT_SYMBOL(chacha_crypt_arch);

This can process an arbitrary amount of data with preemption disabled.
Shouldn't the library functions limit the amount of data processed per
fpu_begin/fpu_end region?  I see that some of them do...

- Eric

Reply via email to