diff options
| -rw-r--r-- | drivers/nvme/host/rdma.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c index c9424da0d23e..bcb0e5d6343d 100644 --- a/drivers/nvme/host/rdma.c +++ b/drivers/nvme/host/rdma.c | |||
| @@ -888,9 +888,9 @@ static void nvme_rdma_free_ctrl(struct nvme_ctrl *nctrl) | |||
| 888 | list_del(&ctrl->list); | 888 | list_del(&ctrl->list); |
| 889 | mutex_unlock(&nvme_rdma_ctrl_mutex); | 889 | mutex_unlock(&nvme_rdma_ctrl_mutex); |
| 890 | 890 | ||
| 891 | kfree(ctrl->queues); | ||
| 892 | nvmf_free_options(nctrl->opts); | 891 | nvmf_free_options(nctrl->opts); |
| 893 | free_ctrl: | 892 | free_ctrl: |
| 893 | kfree(ctrl->queues); | ||
| 894 | kfree(ctrl); | 894 | kfree(ctrl); |
| 895 | } | 895 | } |
| 896 | 896 | ||
| @@ -1932,11 +1932,6 @@ static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev, | |||
| 1932 | goto out_free_ctrl; | 1932 | goto out_free_ctrl; |
| 1933 | } | 1933 | } |
| 1934 | 1934 | ||
| 1935 | ret = nvme_init_ctrl(&ctrl->ctrl, dev, &nvme_rdma_ctrl_ops, | ||
| 1936 | 0 /* no quirks, we're perfect! */); | ||
| 1937 | if (ret) | ||
| 1938 | goto out_free_ctrl; | ||
| 1939 | |||
| 1940 | INIT_DELAYED_WORK(&ctrl->reconnect_work, | 1935 | INIT_DELAYED_WORK(&ctrl->reconnect_work, |
| 1941 | nvme_rdma_reconnect_ctrl_work); | 1936 | nvme_rdma_reconnect_ctrl_work); |
| 1942 | INIT_WORK(&ctrl->err_work, nvme_rdma_error_recovery_work); | 1937 | INIT_WORK(&ctrl->err_work, nvme_rdma_error_recovery_work); |
| @@ -1950,14 +1945,19 @@ static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev, | |||
| 1950 | ctrl->queues = kcalloc(ctrl->ctrl.queue_count, sizeof(*ctrl->queues), | 1945 | ctrl->queues = kcalloc(ctrl->ctrl.queue_count, sizeof(*ctrl->queues), |
| 1951 | GFP_KERNEL); | 1946 | GFP_KERNEL); |
| 1952 | if (!ctrl->queues) | 1947 | if (!ctrl->queues) |
| 1953 | goto out_uninit_ctrl; | 1948 | goto out_free_ctrl; |
| 1949 | |||
| 1950 | ret = nvme_init_ctrl(&ctrl->ctrl, dev, &nvme_rdma_ctrl_ops, | ||
| 1951 | 0 /* no quirks, we're perfect! */); | ||
| 1952 | if (ret) | ||
| 1953 | goto out_kfree_queues; | ||
| 1954 | 1954 | ||
| 1955 | changed = nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING); | 1955 | changed = nvme_change_ctrl_state(&ctrl->ctrl, NVME_CTRL_CONNECTING); |
| 1956 | WARN_ON_ONCE(!changed); | 1956 | WARN_ON_ONCE(!changed); |
| 1957 | 1957 | ||
| 1958 | ret = nvme_rdma_configure_admin_queue(ctrl, true); | 1958 | ret = nvme_rdma_configure_admin_queue(ctrl, true); |
| 1959 | if (ret) | 1959 | if (ret) |
| 1960 | goto out_kfree_queues; | 1960 | goto out_uninit_ctrl; |
| 1961 | 1961 | ||
| 1962 | /* sanity check icdoff */ | 1962 | /* sanity check icdoff */ |
| 1963 | if (ctrl->ctrl.icdoff) { | 1963 | if (ctrl->ctrl.icdoff) { |
| @@ -2014,14 +2014,14 @@ static struct nvme_ctrl *nvme_rdma_create_ctrl(struct device *dev, | |||
| 2014 | 2014 | ||
| 2015 | out_remove_admin_queue: | 2015 | out_remove_admin_queue: |
| 2016 | nvme_rdma_destroy_admin_queue(ctrl, true); | 2016 | nvme_rdma_destroy_admin_queue(ctrl, true); |
| 2017 | out_kfree_queues: | ||
| 2018 | kfree(ctrl->queues); | ||
| 2019 | out_uninit_ctrl: | 2017 | out_uninit_ctrl: |
| 2020 | nvme_uninit_ctrl(&ctrl->ctrl); | 2018 | nvme_uninit_ctrl(&ctrl->ctrl); |
| 2021 | nvme_put_ctrl(&ctrl->ctrl); | 2019 | nvme_put_ctrl(&ctrl->ctrl); |
| 2022 | if (ret > 0) | 2020 | if (ret > 0) |
| 2023 | ret = -EIO; | 2021 | ret = -EIO; |
| 2024 | return ERR_PTR(ret); | 2022 | return ERR_PTR(ret); |
| 2023 | out_kfree_queues: | ||
| 2024 | kfree(ctrl->queues); | ||
| 2025 | out_free_ctrl: | 2025 | out_free_ctrl: |
| 2026 | kfree(ctrl); | 2026 | kfree(ctrl); |
| 2027 | return ERR_PTR(ret); | 2027 | return ERR_PTR(ret); |
