mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	crypto: caam/qi - properly set IV after {en,de}crypt
caam/qi needs a fix similar to what was done for caam/jr in
commit "crypto: caam/qi - properly set IV after {en,de}crypt",
to allow for ablkcipher/skcipher chunking/streaming.
Cc: <stable@vger.kernel.org>
Fixes: b189817cf7 ("crypto: caam/qi - add ablkcipher and authenc algorithms")
Suggested-by: David Gstir <david@sigma-star.at>
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
			
			
This commit is contained in:
		
							parent
							
								
									1ed289f7b7
								
							
						
					
					
						commit
						a68a193805
					
				
					 1 changed files with 8 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -776,9 +776,9 @@ static void ablkcipher_done(struct caam_drv_req *drv_req, u32 status)
 | 
			
		|||
	struct crypto_ablkcipher *ablkcipher = crypto_ablkcipher_reqtfm(req);
 | 
			
		||||
	struct caam_ctx *caam_ctx = crypto_ablkcipher_ctx(ablkcipher);
 | 
			
		||||
	struct device *qidev = caam_ctx->qidev;
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
	int ivsize = crypto_ablkcipher_ivsize(ablkcipher);
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG
 | 
			
		||||
	dev_err(qidev, "%s %d: status 0x%x\n", __func__, __LINE__, status);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -799,6 +799,13 @@ static void ablkcipher_done(struct caam_drv_req *drv_req, u32 status)
 | 
			
		|||
	ablkcipher_unmap(qidev, edesc, req);
 | 
			
		||||
	qi_cache_free(edesc);
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * The crypto API expects us to set the IV (req->info) to the last
 | 
			
		||||
	 * ciphertext block. This is used e.g. by the CTS mode.
 | 
			
		||||
	 */
 | 
			
		||||
	scatterwalk_map_and_copy(req->info, req->dst, req->nbytes - ivsize,
 | 
			
		||||
				 ivsize, 0);
 | 
			
		||||
 | 
			
		||||
	ablkcipher_request_complete(req, status);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue