hc
2023-11-06 e3e12f52b214121840b44c91de5b3e5af5d3eb84
kernel/arch/x86/crypto/aesni-intel_glue.c
....@@ -434,14 +434,14 @@
434434
435435 err = skcipher_walk_virt(&walk, req, true);
436436
437
- kernel_fpu_begin();
438437 while ((nbytes = walk.nbytes)) {
438
+ kernel_fpu_begin();
439439 aesni_ecb_enc(ctx, walk.dst.virt.addr, walk.src.virt.addr,
440440 nbytes & AES_BLOCK_MASK);
441
+ kernel_fpu_end();
441442 nbytes &= AES_BLOCK_SIZE - 1;
442443 err = skcipher_walk_done(&walk, nbytes);
443444 }
444
- kernel_fpu_end();
445445
446446 return err;
447447 }
....@@ -456,14 +456,14 @@
456456
457457 err = skcipher_walk_virt(&walk, req, true);
458458
459
- kernel_fpu_begin();
460459 while ((nbytes = walk.nbytes)) {
460
+ kernel_fpu_begin();
461461 aesni_ecb_dec(ctx, walk.dst.virt.addr, walk.src.virt.addr,
462462 nbytes & AES_BLOCK_MASK);
463
+ kernel_fpu_end();
463464 nbytes &= AES_BLOCK_SIZE - 1;
464465 err = skcipher_walk_done(&walk, nbytes);
465466 }
466
- kernel_fpu_end();
467467
468468 return err;
469469 }
....@@ -478,14 +478,14 @@
478478
479479 err = skcipher_walk_virt(&walk, req, true);
480480
481
- kernel_fpu_begin();
482481 while ((nbytes = walk.nbytes)) {
482
+ kernel_fpu_begin();
483483 aesni_cbc_enc(ctx, walk.dst.virt.addr, walk.src.virt.addr,
484484 nbytes & AES_BLOCK_MASK, walk.iv);
485
+ kernel_fpu_end();
485486 nbytes &= AES_BLOCK_SIZE - 1;
486487 err = skcipher_walk_done(&walk, nbytes);
487488 }
488
- kernel_fpu_end();
489489
490490 return err;
491491 }
....@@ -500,14 +500,14 @@
500500
501501 err = skcipher_walk_virt(&walk, req, true);
502502
503
- kernel_fpu_begin();
504503 while ((nbytes = walk.nbytes)) {
504
+ kernel_fpu_begin();
505505 aesni_cbc_dec(ctx, walk.dst.virt.addr, walk.src.virt.addr,
506506 nbytes & AES_BLOCK_MASK, walk.iv);
507
+ kernel_fpu_end();
507508 nbytes &= AES_BLOCK_SIZE - 1;
508509 err = skcipher_walk_done(&walk, nbytes);
509510 }
510
- kernel_fpu_end();
511511
512512 return err;
513513 }
....@@ -557,18 +557,20 @@
557557
558558 err = skcipher_walk_virt(&walk, req, true);
559559
560
- kernel_fpu_begin();
561560 while ((nbytes = walk.nbytes) >= AES_BLOCK_SIZE) {
561
+ kernel_fpu_begin();
562562 aesni_ctr_enc_tfm(ctx, walk.dst.virt.addr, walk.src.virt.addr,
563563 nbytes & AES_BLOCK_MASK, walk.iv);
564
+ kernel_fpu_end();
564565 nbytes &= AES_BLOCK_SIZE - 1;
565566 err = skcipher_walk_done(&walk, nbytes);
566567 }
567568 if (walk.nbytes) {
569
+ kernel_fpu_begin();
568570 ctr_crypt_final(ctx, &walk);
571
+ kernel_fpu_end();
569572 err = skcipher_walk_done(&walk, 0);
570573 }
571
- kernel_fpu_end();
572574
573575 return err;
574576 }