Make sure every allocated data structure gets freed in case of
unsuccessful libzbc ioengine initialization.
Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
if (ret) {
log_err("%s: zbc_open() failed, err=%d\n",
f->file_name, ret);
- return ret;
+ goto err;
}
ret = libzbc_get_dev_info(ld, f);
- if (ret) {
- zbc_close(ld->zdev);
- free(ld);
- return ret;
- }
+ if (ret)
+ goto err_close;
td->io_ops_data = ld;
out:
*p_ld = ld;
return 0;
+
+err_close:
+ zbc_close(ld->zdev);
+err:
+ free(ld);
+ return ret;
}
static int libzbc_close_dev(struct thread_data *td)