After enable nvme streams, then if get stream params failed, We should disable streams before return error in nvme_configure_directives() function.
Signed-off-by: Wu Bo <wub...@huawei.com> --- drivers/nvme/host/core.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index f3c037f..298e60c 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -552,20 +552,24 @@ static int nvme_configure_directives(struct nvme_ctrl *ctrl) return ret; ret = nvme_get_stream_params(ctrl, &s, NVME_NSID_ALL); - if (ret) - return ret; + if (ret) { + goto out_disable_stream; + } ctrl->nssa = le16_to_cpu(s.nssa); if (ctrl->nssa < BLK_MAX_WRITE_HINTS - 1) { dev_info(ctrl->device, "too few streams (%u) available\n", ctrl->nssa); - nvme_disable_streams(ctrl); - return 0; + goto out_disable_stream; } ctrl->nr_streams = min_t(unsigned, ctrl->nssa, BLK_MAX_WRITE_HINTS - 1); dev_info(ctrl->device, "Using %u streams\n", ctrl->nr_streams); return 0; + +out_disable_stream: + nvme_disable_streams(ctrl); + return ret; } /* -- 1.8.3.1