@@ -945,9 +945,14 @@ static int km_AesXtsEncrypt(struct skcipher_request *req)
945945 if (nbytes < walk .total )
946946 nbytes &= ~(AES_BLOCK_SIZE - 1 );
947947
948- err = wc_AesXtsEncryptUpdate (ctx -> aesXts , walk .dst .virt .addr ,
949- walk .src .virt .addr , nbytes ,
950- walk .iv );
948+ if (nbytes & ((unsigned int )AES_BLOCK_SIZE - 1U ))
949+ err = wc_AesXtsEncryptFinal (ctx -> aesXts , walk .dst .virt .addr ,
950+ walk .src .virt .addr , nbytes ,
951+ walk .iv );
952+ else
953+ err = wc_AesXtsEncryptUpdate (ctx -> aesXts , walk .dst .virt .addr ,
954+ walk .src .virt .addr , nbytes ,
955+ walk .iv );
951956
952957 if (unlikely (err )) {
953958 pr_err ("%s: wc_AesXtsEncryptUpdate failed: %d\n" ,
@@ -979,12 +984,12 @@ static int km_AesXtsEncrypt(struct skcipher_request *req)
979984 if (err )
980985 return err ;
981986
982- err = wc_AesXtsEncryptUpdate (ctx -> aesXts , walk .dst .virt .addr ,
987+ err = wc_AesXtsEncryptFinal (ctx -> aesXts , walk .dst .virt .addr ,
983988 walk .src .virt .addr , walk .nbytes ,
984989 walk .iv );
985990
986991 if (unlikely (err )) {
987- pr_err ("%s: wc_AesXtsEncryptUpdate failed: %d\n" ,
992+ pr_err ("%s: wc_AesXtsEncryptFinal failed: %d\n" ,
988993 crypto_tfm_alg_driver_name (crypto_skcipher_tfm (tfm )), err );
989994 return - EINVAL ;
990995 }
@@ -1071,9 +1076,14 @@ static int km_AesXtsDecrypt(struct skcipher_request *req)
10711076 if (nbytes < walk .total )
10721077 nbytes &= ~(AES_BLOCK_SIZE - 1 );
10731078
1074- err = wc_AesXtsDecryptUpdate (ctx -> aesXts , walk .dst .virt .addr ,
1075- walk .src .virt .addr , nbytes ,
1076- walk .iv );
1079+ if (nbytes & ((unsigned int )AES_BLOCK_SIZE - 1U ))
1080+ err = wc_AesXtsDecryptFinal (ctx -> aesXts , walk .dst .virt .addr ,
1081+ walk .src .virt .addr , nbytes ,
1082+ walk .iv );
1083+ else
1084+ err = wc_AesXtsDecryptUpdate (ctx -> aesXts , walk .dst .virt .addr ,
1085+ walk .src .virt .addr , nbytes ,
1086+ walk .iv );
10771087
10781088 if (unlikely (err )) {
10791089 pr_err ("%s: wc_AesXtsDecryptUpdate failed: %d\n" ,
@@ -1105,12 +1115,12 @@ static int km_AesXtsDecrypt(struct skcipher_request *req)
11051115 if (err )
11061116 return err ;
11071117
1108- err = wc_AesXtsDecryptUpdate (ctx -> aesXts , walk .dst .virt .addr ,
1118+ err = wc_AesXtsDecryptFinal (ctx -> aesXts , walk .dst .virt .addr ,
11091119 walk .src .virt .addr , walk .nbytes ,
11101120 walk .iv );
11111121
11121122 if (unlikely (err )) {
1113- pr_err ("%s: wc_AesXtsDecryptUpdate failed: %d\n" ,
1123+ pr_err ("%s: wc_AesXtsDecryptFinal failed: %d\n" ,
11141124 crypto_tfm_alg_driver_name (crypto_skcipher_tfm (tfm )), err );
11151125 return - EINVAL ;
11161126 }
@@ -2029,7 +2039,7 @@ static int aes_xts_128_test(void)
20292039 ret = wc_AesXtsEncryptUpdate (aes , buf , p2 , AES_BLOCK_SIZE , iv );
20302040 if (ret != 0 )
20312041 goto out ;
2032- ret = wc_AesXtsEncryptUpdate (aes , buf + AES_BLOCK_SIZE ,
2042+ ret = wc_AesXtsEncryptFinal (aes , buf + AES_BLOCK_SIZE ,
20332043 p2 + AES_BLOCK_SIZE ,
20342044 sizeof (p2 ) - AES_BLOCK_SIZE , iv );
20352045 if (ret != 0 )
@@ -2214,7 +2224,10 @@ static int aes_xts_128_test(void)
22142224 if (ret != 0 )
22152225 goto out ;
22162226 for (k = 0 ; k < j ; k += AES_BLOCK_SIZE ) {
2217- ret = wc_AesXtsEncryptUpdate (aes , large_input + k , large_input + k , (j - k ) < AES_BLOCK_SIZE * 2 ? j - k : AES_BLOCK_SIZE , iv );
2227+ if ((j - k ) < AES_BLOCK_SIZE * 2 )
2228+ ret = wc_AesXtsEncryptFinal (aes , large_input + k , large_input + k , j - k , iv );
2229+ else
2230+ ret = wc_AesXtsEncryptUpdate (aes , large_input + k , large_input + k , AES_BLOCK_SIZE , iv );
22182231 if (ret != 0 )
22192232 goto out ;
22202233 if ((j - k ) < AES_BLOCK_SIZE * 2 )
@@ -2252,7 +2265,10 @@ static int aes_xts_128_test(void)
22522265 if (ret != 0 )
22532266 goto out ;
22542267 for (k = 0 ; k < j ; k += AES_BLOCK_SIZE ) {
2255- ret = wc_AesXtsDecryptUpdate (aes , large_input + k , large_input + k , (j - k ) < AES_BLOCK_SIZE * 2 ? j - k : AES_BLOCK_SIZE , iv );
2268+ if ((j - k ) < AES_BLOCK_SIZE * 2 )
2269+ ret = wc_AesXtsDecryptFinal (aes , large_input + k , large_input + k , j - k , iv );
2270+ else
2271+ ret = wc_AesXtsDecryptUpdate (aes , large_input + k , large_input + k , AES_BLOCK_SIZE , iv );
22562272 if (ret != 0 )
22572273 goto out ;
22582274 if ((j - k ) < AES_BLOCK_SIZE * 2 )
@@ -2611,7 +2627,7 @@ static int aes_xts_256_test(void)
26112627 ret = wc_AesXtsEncryptUpdate (aes , buf , p2 , AES_BLOCK_SIZE , iv );
26122628 if (ret != 0 )
26132629 goto out ;
2614- ret = wc_AesXtsEncryptUpdate (aes , buf + AES_BLOCK_SIZE ,
2630+ ret = wc_AesXtsEncryptFinal (aes , buf + AES_BLOCK_SIZE ,
26152631 p2 + AES_BLOCK_SIZE ,
26162632 sizeof (p2 ) - AES_BLOCK_SIZE , iv );
26172633 if (ret != 0 )
@@ -2700,7 +2716,10 @@ static int aes_xts_256_test(void)
27002716 if (ret != 0 )
27012717 goto out ;
27022718 for (k = 0 ; k < j ; k += AES_BLOCK_SIZE ) {
2703- ret = wc_AesXtsEncryptUpdate (aes , large_input + k , large_input + k , (j - k ) < AES_BLOCK_SIZE * 2 ? j - k : AES_BLOCK_SIZE , iv );
2719+ if ((j - k ) < AES_BLOCK_SIZE * 2 )
2720+ ret = wc_AesXtsEncryptFinal (aes , large_input + k , large_input + k , j - k , iv );
2721+ else
2722+ ret = wc_AesXtsEncryptUpdate (aes , large_input + k , large_input + k , AES_BLOCK_SIZE , iv );
27042723 if (ret != 0 )
27052724 goto out ;
27062725 if ((j - k ) < AES_BLOCK_SIZE * 2 )
@@ -2738,7 +2757,10 @@ static int aes_xts_256_test(void)
27382757 if (ret != 0 )
27392758 goto out ;
27402759 for (k = 0 ; k < j ; k += AES_BLOCK_SIZE ) {
2741- ret = wc_AesXtsDecryptUpdate (aes , large_input + k , large_input + k , (j - k ) < AES_BLOCK_SIZE * 2 ? j - k : AES_BLOCK_SIZE , iv );
2760+ if ((j - k ) < AES_BLOCK_SIZE * 2 )
2761+ ret = wc_AesXtsDecryptFinal (aes , large_input + k , large_input + k , j - k , iv );
2762+ else
2763+ ret = wc_AesXtsDecryptUpdate (aes , large_input + k , large_input + k , AES_BLOCK_SIZE , iv );
27422764 if (ret != 0 )
27432765 goto out ;
27442766 if ((j - k ) < AES_BLOCK_SIZE * 2 )
0 commit comments