mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-27 03:19:35 +03:00
Always call rw_init in zio_crypt_key_unwrap
The error path in zio_crypt_key_unwrap would call zio_crypt_key_destroy which calls rw_destroy(&key->zk_salt_lock); which has not yet been initialized. We move the rw_init() call to the start of zio_crypt_key_unwrap instead. Reviewed-by: Tom Caputi <tcaputi@datto.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Jorgen Lundman <lundman@lundman.net> Closes #8604 Closes #8605
This commit is contained in:
parent
8cb34421e0
commit
48ed0f9da0
@ -559,6 +559,8 @@ zio_crypt_key_unwrap(crypto_key_t *cwkey, uint64_t crypt, uint64_t version,
|
|||||||
ASSERT3U(crypt, <, ZIO_CRYPT_FUNCTIONS);
|
ASSERT3U(crypt, <, ZIO_CRYPT_FUNCTIONS);
|
||||||
ASSERT3U(cwkey->ck_format, ==, CRYPTO_KEY_RAW);
|
ASSERT3U(cwkey->ck_format, ==, CRYPTO_KEY_RAW);
|
||||||
|
|
||||||
|
rw_init(&key->zk_salt_lock, NULL, RW_DEFAULT, NULL);
|
||||||
|
|
||||||
keydata_len = zio_crypt_table[crypt].ci_keylen;
|
keydata_len = zio_crypt_table[crypt].ci_keylen;
|
||||||
|
|
||||||
/* initialize uio_ts */
|
/* initialize uio_ts */
|
||||||
@ -640,7 +642,6 @@ zio_crypt_key_unwrap(crypto_key_t *cwkey, uint64_t crypt, uint64_t version,
|
|||||||
key->zk_version = version;
|
key->zk_version = version;
|
||||||
key->zk_guid = guid;
|
key->zk_guid = guid;
|
||||||
key->zk_salt_count = 0;
|
key->zk_salt_count = 0;
|
||||||
rw_init(&key->zk_salt_lock, NULL, RW_DEFAULT, NULL);
|
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user