mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-22 02:37:15 +00:00
armv8_crypto: fix recursive fpu_kern_enter call
Now armv8_crypto is using FPU_KERN_NOCTX, this results in a kernel panic
in armv8_crypto.c:armv8_crypto_cipher_setup:
panic: recursive fpu_kern_enter while in PCB_FP_NOSAVE state
This is because in armv8_crypto.c:armv8_crypto_cipher_process,
directly after calling fpu_kern_enter() a call is made to
armv8_crypto_cipher_setup(), resulting in nested calls to
fpu_kern_enter() without the required fpu_kern_leave() in between.
Move fpu_kern_enter() in armv8_crypto_cipher_process() after the
call to armv8_crypto_cipher_setup() to resolve this.
Reviewed by: markj, andrew
Fixes: 6485286f53
("armv8_crypto: Switch to using FPU_KERN_NOCTX")
Sponsored by: Arm Ltd
Differential Revision: https://reviews.freebsd.org/D41671
This commit is contained in:
parent
5429e19421
commit
565c887a77
|
@ -336,8 +336,6 @@ armv8_crypto_cipher_process(struct armv8_crypto_session *ses,
|
|||
crypto_cursor_copy(&fromc, &toc);
|
||||
}
|
||||
|
||||
fpu_kern_enter(curthread, NULL, FPU_KERN_NORMAL | FPU_KERN_NOCTX);
|
||||
|
||||
if (crp->crp_cipher_key != NULL) {
|
||||
armv8_crypto_cipher_setup(ses, csp, crp->crp_cipher_key,
|
||||
csp->csp_cipher_klen);
|
||||
|
@ -345,6 +343,8 @@ armv8_crypto_cipher_process(struct armv8_crypto_session *ses,
|
|||
|
||||
crypto_read_iv(crp, iv);
|
||||
|
||||
fpu_kern_enter(curthread, NULL, FPU_KERN_NORMAL | FPU_KERN_NOCTX);
|
||||
|
||||
error = 0;
|
||||
switch (csp->csp_cipher_alg) {
|
||||
case CRYPTO_AES_CBC:
|
||||
|
|
Loading…
Reference in a new issue