diff --git a/lib/blobfs/blobfs.c b/lib/blobfs/blobfs.c index 381fa5d54..11c44ace9 100644 --- a/lib/blobfs/blobfs.c +++ b/lib/blobfs/blobfs.c @@ -439,6 +439,12 @@ spdk_fs_init(struct spdk_bs_dev *dev, fs_send_request_fn send_request_fn, req = alloc_fs_request(fs->md_target.md_fs_channel); if (req == NULL) { + spdk_put_io_channel(fs->md_target.md_io_channel); + spdk_io_device_unregister(&fs->md_target); + spdk_put_io_channel(fs->sync_target.sync_io_channel); + spdk_io_device_unregister(&fs->sync_target); + spdk_io_device_unregister(&fs->io_target); + free(fs); cb_fn(cb_arg, NULL, -ENOMEM); return; } @@ -559,6 +565,12 @@ spdk_fs_load(struct spdk_bs_dev *dev, fs_send_request_fn send_request_fn, req = alloc_fs_request(fs->md_target.md_fs_channel); if (req == NULL) { + spdk_put_io_channel(fs->md_target.md_io_channel); + spdk_io_device_unregister(&fs->md_target); + spdk_put_io_channel(fs->sync_target.sync_io_channel); + spdk_io_device_unregister(&fs->sync_target); + spdk_io_device_unregister(&fs->io_target); + free(fs); cb_fn(cb_arg, NULL, -ENOMEM); return; }