Skip to content

Commit ea47c47

Browse files
committed
nvme: rdma: split controller bringup handling
Drivers must call nvme_uninit_ctrl after a successful nvme_init_ctrl. Split the allocation side out to make the error handling boundary easier to navigate. The nvme rdma driver's error handling had different returns in the error goto label's, which harm readability. Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Chaitanya Kulkarni <[email protected]> Signed-off-by: Keith Busch <[email protected]>
1 parent 10fd7fb commit ea47c47

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

drivers/nvme/host/rdma.c

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2237,12 +2237,11 @@ nvme_rdma_existing_controller(struct nvmf_ctrl_options *opts)
22372237
return found;
22382238
}
22392239

2240-
static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev,
2240+
static struct nvme_rdma_ctrl *nvme_rdma_alloc_ctrl(struct device *dev,
22412241
struct nvmf_ctrl_options *opts)
22422242
{
22432243
struct nvme_rdma_ctrl *ctrl;
22442244
int ret;
2245-
bool changed;
22462245

22472246
ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
22482247
if (!ctrl)
@@ -2304,6 +2303,26 @@ static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev,
23042303
if (ret)
23052304
goto out_kfree_queues;
23062305

2306+
return ctrl;
2307+
2308+
out_kfree_queues:
2309+
kfree(ctrl->queues);
2310+
out_free_ctrl:
2311+
kfree(ctrl);
2312+
return ERR_PTR(ret);
2313+
}
2314+
2315+
static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev,
2316+
struct nvmf_ctrl_options *opts)
2317+
{
2318+
struct nvme_rdma_ctrl *ctrl;
2319+
bool changed;
2320+
int ret;
2321+
2322+
ctrl = nvme_rdma_alloc_ctrl(dev, opts);
2323+
if (IS_ERR(ctrl))
2324+
return ERR_CAST(ctrl);
2325+
23072326
changed = nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING);
23082327
WARN_ON_ONCE(!changed);
23092328

@@ -2326,11 +2345,6 @@ static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev,
23262345
if (ret > 0)
23272346
ret = -EIO;
23282347
return ERR_PTR(ret);
2329-
out_kfree_queues:
2330-
kfree(ctrl->queues);
2331-
out_free_ctrl:
2332-
kfree(ctrl);
2333-
return ERR_PTR(ret);
23342348
}
23352349

23362350
static struct nvmf_transport_ops nvme_rdma_transport = {

0 commit comments

Comments
 (0)