Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1976113pxb; Fri, 5 Mar 2021 04:35:02 -0800 (PST) X-Google-Smtp-Source: ABdhPJy9T7FsU+8xRI6OQUAZQV+DxCYjaHTQnbtPHkqFQty3SM27OK6Sip2UUwlzDzH93e1R6x8H X-Received: by 2002:aa7:d511:: with SMTP id y17mr8866709edq.275.1614947702548; Fri, 05 Mar 2021 04:35:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614947702; cv=none; d=google.com; s=arc-20160816; b=SGPm23yHTa8Ku1S6aiGYnp9RiNPORAaH3yJ71wN215zyPP83QdtqO4frhNPJfYoAMT sgENvo+kkVPUOPK3d9KNcPvFwWInIgTHXUdA2EyYyY+/eDF9/kfbZwbzUZzaCIMPhsoY GAX90r3KqI6Exz59dzF60Lwl15dT3NEEWiQjdXW21a8JfLFZ6NInfIUI9s/t55YhdDYZ +RMEJhoq2djsqyjjf2FGd+cKkqrHzfmlPYZ+CR+3Qq4VDYEBFFgSKxvfkStjt0/mx2Hg dqHrZKhpvsxLltm68BAdRKtVt036TaT+x+cFu7Jaec4sB5VmwtOPzwpGgTmTbT+JRKtM FLaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=jnsYiQjDbV+/QSM6gKrBvWpYQZqEwbS9gqYHERPb1CU=; b=KFccMmKCR73pmpVADGTp8VgIDRKvhJrwo5XgsCvEQOhndxyQSRVG4drzJt2Yasp/eu IsMAfeGOcoyQKZCGhOTCsOhnvriBGIGa7KS3eBT/tJYCf4jxsmjMx8OcJU6xEEGjMbh2 72mSTx++MSddD2XSuoKAv0pNuVvNG0/h7Ufoj9+3Sd3mKkD4OC1GP/evRZJv5wYG+5N/ cWQCK5YNe9k48/PKRznz2Otu6D3aBJkxy0tCT1AXsoqcqXYizcqO5J83V9/ErhBwN5bo VzhtUISGWbGNWZPnNZoXpoztIyJx1Guryy+2ph7psnQrZEpuXH3cW+iorE8DLOjRom5k V2sA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=BFCQGNGs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cf2si1250698ejb.332.2021.03.05.04.34.38; Fri, 05 Mar 2021 04:35:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=BFCQGNGs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232405AbhCEMbq (ORCPT + 99 others); Fri, 5 Mar 2021 07:31:46 -0500 Received: from mail.kernel.org ([198.145.29.99]:40920 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231289AbhCEMay (ORCPT ); Fri, 5 Mar 2021 07:30:54 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 543BF65019; Fri, 5 Mar 2021 12:30:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1614947453; bh=+zUuPhFCuokydmVOO+wcFjTtCuDX+cNxFWMXs44cw04=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BFCQGNGsD0e0DcX66nuxKB9nBtIxRiTuP+EkByt86nRmj+jHqKFvpiKy8dZUCeV9c lh7HHWeKXuvN8jufjsws0sG7kErEWoWUmYHddHlbd/AB2jixe0gWsZga9S5nDOaMZI qY+Ahfu0jV/GxYONVlD0BeeUWdpFLmcn92oecnOQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Chao Leng , Christoph Hellwig , Sasha Levin Subject: [PATCH 5.10 070/102] nvme-tcp: add clean action for failed reconnection Date: Fri, 5 Mar 2021 13:21:29 +0100 Message-Id: <20210305120906.721724037@linuxfoundation.org> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210305120903.276489876@linuxfoundation.org> References: <20210305120903.276489876@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Chao Leng [ Upstream commit 70a99574a79f1cd4dc7ad56ea37be40844bfb97b ] If reconnect failed after start io queues, the queues will be unquiesced and new requests continue to be delivered. Reconnection error handling process directly free queues without cancel suspend requests. The suppend request will time out, and then crash due to use the queue after free. Add sync queues and cancel suppend requests for reconnection error handling. Signed-off-by: Chao Leng Signed-off-by: Christoph Hellwig Signed-off-by: Sasha Levin --- drivers/nvme/host/tcp.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c index 6487b7897d1f..739ac7deccd9 100644 --- a/drivers/nvme/host/tcp.c +++ b/drivers/nvme/host/tcp.c @@ -1815,8 +1815,10 @@ static int nvme_tcp_configure_io_queues(struct nvme_ctrl *ctrl, bool new) out_wait_freeze_timed_out: nvme_stop_queues(ctrl); + nvme_sync_io_queues(ctrl); nvme_tcp_stop_io_queues(ctrl); out_cleanup_connect_q: + nvme_cancel_tagset(ctrl); if (new) blk_cleanup_queue(ctrl->connect_q); out_free_tag_set: @@ -1878,12 +1880,16 @@ static int nvme_tcp_configure_admin_queue(struct nvme_ctrl *ctrl, bool new) error = nvme_init_identify(ctrl); if (error) - goto out_stop_queue; + goto out_quiesce_queue; return 0; +out_quiesce_queue: + blk_mq_quiesce_queue(ctrl->admin_q); + blk_sync_queue(ctrl->admin_q); out_stop_queue: nvme_tcp_stop_queue(ctrl, 0); + nvme_cancel_admin_tagset(ctrl); out_cleanup_queue: if (new) blk_cleanup_queue(ctrl->admin_q); @@ -2003,10 +2009,18 @@ static int nvme_tcp_setup_ctrl(struct nvme_ctrl *ctrl, bool new) return 0; destroy_io: - if (ctrl->queue_count > 1) + if (ctrl->queue_count > 1) { + nvme_stop_queues(ctrl); + nvme_sync_io_queues(ctrl); + nvme_tcp_stop_io_queues(ctrl); + nvme_cancel_tagset(ctrl); nvme_tcp_destroy_io_queues(ctrl, new); + } destroy_admin: + blk_mq_quiesce_queue(ctrl->admin_q); + blk_sync_queue(ctrl->admin_q); nvme_tcp_stop_queue(ctrl, 0); + nvme_cancel_admin_tagset(ctrl); nvme_tcp_destroy_admin_queue(ctrl, new); return ret; } -- 2.30.1