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