Commit 4c0a39b1 authored by Liu Xiaodong's avatar Liu Xiaodong Committed by Jim Harris
Browse files

ublk: fix error case in ublk_start_disk



Obtained resource can be directly released in error
handling of ublk_start_disk.
Fix the improper usage of _ublk_try_close_dev to release
resource in ublk_start_disk.

Change-Id: I291bbfb179b9df4deb8f3d346b2d660e6d17fdc1
Signed-off-by: default avatarLiu Xiaodong <xiaodong.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16459


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent a1aede09
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -1254,6 +1254,7 @@ ublk_ios_fini(struct spdk_ublk_dev *ublk)
			}
		}
		free(q->ios);
		q->ios = NULL;
	}

	spdk_mempool_free(ublk->io_buf_pool);
@@ -1378,13 +1379,16 @@ ublk_start_disk(const char *bdev_name, uint32_t ublk_id,
	/* Add ublk_dev to the end of disk list */
	rc = ublk_dev_list_register(ublk);
	if (rc != 0) {
		goto err;
		spdk_bdev_close(ublk->bdev_desc);
		free(ublk);
		return rc;
	}

	ublk_info_param_init(ublk);
	rc = ublk_ios_init(ublk);
	if (rc != 0) {
		goto err;
		ublk_delete_dev(ublk);
		return rc;
	}

	SPDK_INFOLOG(ublk, "Enabling kernel access to bdev %s via ublk %d\n",
@@ -1392,13 +1396,9 @@ ublk_start_disk(const char *bdev_name, uint32_t ublk_id,
	rc = ublk_ctrl_cmd(ublk, UBLK_CMD_ADD_DEV);
	if (rc < 0) {
		SPDK_ERRLOG("UBLK can't add dev %d, rc %s\n", ublk->ublk_id, spdk_strerror(-rc));
		goto err;
		ublk_delete_dev(ublk);
	}

	return 0;

err:
	_ublk_try_close_dev(ublk);
	return rc;
}