bdev/crypto: Error handling fixes in vbdev_crypto_claim()
- Fixed missed spdk_bdev_module_release_bdev() during error handling.
- Fill the keys with zeros before releasing memory.
- Fixed issue with g_number_of_claimed_volumes that can become negative
because of invalid error handling.
Signed-off-by: Yuriy Umanets <yumanets@nvidia.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11628
(cherry picked from commit 3d0bae35c4
)
Change-Id: I8afd6027abb4c8efc332994c5a2997b79583c174
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11856
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
4bf86b75cb
commit
703fceb4a9
@ -1693,8 +1693,7 @@ vbdev_crypto_claim(const char *bdev_name)
|
||||
|
||||
if (g_number_of_claimed_volumes >= MAX_CRYPTO_VOLUMES) {
|
||||
SPDK_DEBUGLOG(vbdev_crypto, "Reached max number of claimed volumes\n");
|
||||
rc = -EINVAL;
|
||||
goto error_vbdev_alloc;
|
||||
return -EINVAL;
|
||||
}
|
||||
g_number_of_claimed_volumes++;
|
||||
|
||||
@ -1900,18 +1899,28 @@ error_session_de_create:
|
||||
rte_cryptodev_sym_session_free(vbdev->session_encrypt);
|
||||
error_session_en_create:
|
||||
error_cant_find_devid:
|
||||
spdk_bdev_module_release_bdev(vbdev->base_bdev);
|
||||
error_claim:
|
||||
spdk_bdev_close(vbdev->base_desc);
|
||||
TAILQ_REMOVE(&g_vbdev_crypto, vbdev, link);
|
||||
spdk_io_device_unregister(vbdev, NULL);
|
||||
if (vbdev->xts_key) {
|
||||
memset(vbdev->xts_key, 0, AES_XTS_KEY_LENGTH * 2);
|
||||
free(vbdev->xts_key);
|
||||
}
|
||||
error_xts_key:
|
||||
spdk_bdev_close(vbdev->base_desc);
|
||||
error_open:
|
||||
free(vbdev->drv_name);
|
||||
error_drv_name:
|
||||
if (vbdev->key2) {
|
||||
memset(vbdev->key2, 0, strlen(vbdev->key2));
|
||||
free(vbdev->key2);
|
||||
}
|
||||
error_alloc_key2:
|
||||
if (vbdev->key) {
|
||||
memset(vbdev->key, 0, strlen(vbdev->key));
|
||||
free(vbdev->key);
|
||||
}
|
||||
error_alloc_key:
|
||||
free(vbdev->crypto_bdev.name);
|
||||
error_bdev_name:
|
||||
|
Loading…
Reference in New Issue
Block a user