mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	crypto/arm64: aes-ce-gcm - add missing kernel_neon_begin/end pair
Calling pmull_gcm_encrypt_block() requires kernel_neon_begin() and
kernel_neon_end() to be used since the routine touches the NEON
register file. Add the missing calls.
Also, since NEON register contents are not preserved outside of
a kernel mode NEON region, pass the key schedule array again.
Fixes: 7c50136a8a ("crypto: arm64/aes-ghash - yield NEON after every ...")
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
			
			
This commit is contained in:
		
							parent
							
								
									acb1872577
								
							
						
					
					
						commit
						c7513c2a27
					
				
					 1 changed files with 6 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -488,9 +488,13 @@ static int gcm_decrypt(struct aead_request *req)
 | 
			
		|||
			err = skcipher_walk_done(&walk,
 | 
			
		||||
						 walk.nbytes % AES_BLOCK_SIZE);
 | 
			
		||||
		}
 | 
			
		||||
		if (walk.nbytes)
 | 
			
		||||
			pmull_gcm_encrypt_block(iv, iv, NULL,
 | 
			
		||||
		if (walk.nbytes) {
 | 
			
		||||
			kernel_neon_begin();
 | 
			
		||||
			pmull_gcm_encrypt_block(iv, iv, ctx->aes_key.key_enc,
 | 
			
		||||
						num_rounds(&ctx->aes_key));
 | 
			
		||||
			kernel_neon_end();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	} else {
 | 
			
		||||
		__aes_arm64_encrypt(ctx->aes_key.key_enc, tag, iv,
 | 
			
		||||
				    num_rounds(&ctx->aes_key));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue