mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Avoid calling rw_destroy() on uninitialized rwlock
First the function `memset(&key, 0, ...)` but any call to "goto error;" would call zio_crypt_key_destroy(key) which calls `rw_destroy()`. The `rw_init()` is moved up to be right after the memset. This way the rwlock can be released. The ctx does allocate memory, but that is handled by the memset to 0 and icp skips NULL ptrs. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu> Signed-off-by: Jorgen Lundman <lundman@lundman.net> Closes #13976
This commit is contained in:
		
							parent
							
								
									062d3d056b
								
							
						
					
					
						commit
						4b629d04a5
					
				| @ -231,6 +231,7 @@ zio_crypt_key_init(uint64_t crypt, zio_crypt_key_t *key) | ||||
| 
 | ||||
| 	keydata_len = zio_crypt_table[crypt].ci_keylen; | ||||
| 	memset(key, 0, sizeof (zio_crypt_key_t)); | ||||
| 	rw_init(&key->zk_salt_lock, NULL, RW_DEFAULT, NULL); | ||||
| 
 | ||||
| 	/* fill keydata buffers and salt with random data */ | ||||
| 	ret = random_get_bytes((uint8_t *)&key->zk_guid, sizeof (uint64_t)); | ||||
| @ -282,7 +283,6 @@ zio_crypt_key_init(uint64_t crypt, zio_crypt_key_t *key) | ||||
| 	key->zk_crypt = crypt; | ||||
| 	key->zk_version = ZIO_CRYPT_KEY_CURRENT_VERSION; | ||||
| 	key->zk_salt_count = 0; | ||||
| 	rw_init(&key->zk_salt_lock, NULL, RW_DEFAULT, NULL); | ||||
| 
 | ||||
| 	return (0); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Jorgen Lundman
						Jorgen Lundman