Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1020452yba; Thu, 4 Apr 2019 02:35:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqx0FUMfXGYzqAQppUN5Y0zIe+DEVw0YSMw85D0oOAOXYhNnCsrdxvnF+6xROODWXspc2TTs X-Received: by 2002:a63:ad4b:: with SMTP id y11mr4565001pgo.405.1554370520146; Thu, 04 Apr 2019 02:35:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554370520; cv=none; d=google.com; s=arc-20160816; b=y+ggcxrmTBE3StvMwrPW14q0Xlrv7nXluIr6OpMYtZpsoGOBpssR+kxNO0l3TawCUB DcSmXc6b3bbvaP4XmfsRYIV1N/YnclaDcJcXUwUWOvNTT3gSaHKOpeCLz8mqKEHdvkzd QXYqpKDC0rh1yI3onpLSoxOIyOVMHooBWLwT7AAuwD3fngvjNun+w/QsDFoTzh0Ftrcc eGv1qIQ/AECdxtX67jFnooZUsrwnMap/nM0ak9gMbRdeVwztF+V2ptfEKiZmi/GB4Lrp 0n2yLeqj7eF2SDltELmxNyXDF3lT9i+2qN5ickrhSNwo5S3dhm5U6x0/gqDdZXuCIA6Q I+1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=L1tMYYYu3ejSZ41j4MB5TbOZ9UZ7OKE/8gJ7Srsz8bg=; b=G7Up3KSRtrg5CraotHZkC7oDYe4BqmJSZ8bJHQ7xlmzWwC7fVorlYhGYGfRUDw6s1U G38L57hW/X96IjE+kGldZdLQicn0nAEbZqLEwB0r4jSNx/psUNdcjpGf+QSBJgBqzTiE /DbjnPfZ9UVUly43dF0nViYY4pINmSoKXcp5Tf5NU63/OMGAiiAuq3xPZoDKOY/dI/iX kh+K5rz27W8ge+WBO4O6P1hHDaeFS7S7PuC9+ETglm4vdBAIFL6BL0JoD7zF66rEQ2pq 3HYzF0CJ+KrY0wb7UW+g0NTIh1GkGt0NObngBDX2rCjncWbGKUH0S9XvjcllKnYnvkJ/ n+vA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wQSoeHzD; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r80si16238311pfa.128.2019.04.04.02.35.05; Thu, 04 Apr 2019 02:35:20 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wQSoeHzD; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732782AbfDDJdr (ORCPT + 99 others); Thu, 4 Apr 2019 05:33:47 -0400 Received: from mail.kernel.org ([198.145.29.99]:46716 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732568AbfDDJHu (ORCPT ); Thu, 4 Apr 2019 05:07:50 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id E4B51218FE; Thu, 4 Apr 2019 09:07:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554368869; bh=PjvEJSwLveVAK3x4vD5USfBqAhTRkx8N2UoGQdY90JQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wQSoeHzDGU7+a1Gsw58Y+TFHs6QZOZdOTOeiAIS9doaEf7yo4yivULCow9ZaNJaMD Ax86qoMuh2LrLCmk7QJ02gFyy3z1sdL4uHLJgcRxpS7NjJfcsb3OiVKR14t4RTVrF/ bw5cnvL//YtYUh/NqEGenju3vR5p5E3hH3CEMEsQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Yufen Yu , Sagi Grimberg , Bart Van Assche , Christoph Hellwig , Jens Axboe , Sasha Levin Subject: [PATCH 5.0 004/246] nvme-loop: init nvmet_ctrl fatal_err_work when allocate Date: Thu, 4 Apr 2019 10:45:04 +0200 Message-Id: <20190404084619.393729813@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190404084619.236418459@linuxfoundation.org> References: <20190404084619.236418459@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 5.0-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit d11de63f2b519f0a162b834013b6d3a46dbf3886 ] After commit 4d43d395fe (workqueue: Try to catch flush_work() without INIT_WORK()), it can cause warning when delete nvme-loop device, trace like: [ 76.601272] Call Trace: [ 76.601646] ? del_timer+0x72/0xa0 [ 76.602156] __cancel_work_timer+0x1ae/0x270 [ 76.602791] cancel_work_sync+0x14/0x20 [ 76.603407] nvmet_ctrl_free+0x1b7/0x2f0 [nvmet] [ 76.604091] ? free_percpu+0x168/0x300 [ 76.604652] nvmet_sq_destroy+0x106/0x240 [nvmet] [ 76.605346] nvme_loop_destroy_admin_queue+0x30/0x60 [nvme_loop] [ 76.606220] nvme_loop_shutdown_ctrl+0xc3/0xf0 [nvme_loop] [ 76.607026] nvme_loop_delete_ctrl_host+0x19/0x30 [nvme_loop] [ 76.607871] nvme_do_delete_ctrl+0x75/0xb0 [ 76.608477] nvme_sysfs_delete+0x7d/0xc0 [ 76.609057] dev_attr_store+0x24/0x40 [ 76.609603] sysfs_kf_write+0x4c/0x60 [ 76.610144] kernfs_fop_write+0x19a/0x260 [ 76.610742] __vfs_write+0x1c/0x60 [ 76.611246] vfs_write+0xfa/0x280 [ 76.611739] ksys_write+0x6e/0x120 [ 76.612238] __x64_sys_write+0x1e/0x30 [ 76.612787] do_syscall_64+0xbf/0x3a0 [ 76.613329] entry_SYSCALL_64_after_hwframe+0x44/0xa9 We fix it by moving fatal_err_work init to nvmet_alloc_ctrl(), which may more reasonable. Signed-off-by: Yufen Yu Reviewed-by: Sagi Grimberg Reviewed-by: Bart Van Assche Signed-off-by: Christoph Hellwig Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- drivers/nvme/target/core.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c index 88d260f31835..02c63c463222 100644 --- a/drivers/nvme/target/core.c +++ b/drivers/nvme/target/core.c @@ -1171,6 +1171,15 @@ static void nvmet_release_p2p_ns_map(struct nvmet_ctrl *ctrl) put_device(ctrl->p2p_client); } +static void nvmet_fatal_error_handler(struct work_struct *work) +{ + struct nvmet_ctrl *ctrl = + container_of(work, struct nvmet_ctrl, fatal_err_work); + + pr_err("ctrl %d fatal error occurred!\n", ctrl->cntlid); + ctrl->ops->delete_ctrl(ctrl); +} + u16 nvmet_alloc_ctrl(const char *subsysnqn, const char *hostnqn, struct nvmet_req *req, u32 kato, struct nvmet_ctrl **ctrlp) { @@ -1213,6 +1222,7 @@ u16 nvmet_alloc_ctrl(const char *subsysnqn, const char *hostnqn, INIT_WORK(&ctrl->async_event_work, nvmet_async_event_work); INIT_LIST_HEAD(&ctrl->async_events); INIT_RADIX_TREE(&ctrl->p2p_ns_map, GFP_KERNEL); + INIT_WORK(&ctrl->fatal_err_work, nvmet_fatal_error_handler); memcpy(ctrl->subsysnqn, subsysnqn, NVMF_NQN_SIZE); memcpy(ctrl->hostnqn, hostnqn, NVMF_NQN_SIZE); @@ -1316,21 +1326,11 @@ void nvmet_ctrl_put(struct nvmet_ctrl *ctrl) kref_put(&ctrl->ref, nvmet_ctrl_free); } -static void nvmet_fatal_error_handler(struct work_struct *work) -{ - struct nvmet_ctrl *ctrl = - container_of(work, struct nvmet_ctrl, fatal_err_work); - - pr_err("ctrl %d fatal error occurred!\n", ctrl->cntlid); - ctrl->ops->delete_ctrl(ctrl); -} - void nvmet_ctrl_fatal_error(struct nvmet_ctrl *ctrl) { mutex_lock(&ctrl->lock); if (!(ctrl->csts & NVME_CSTS_CFS)) { ctrl->csts |= NVME_CSTS_CFS; - INIT_WORK(&ctrl->fatal_err_work, nvmet_fatal_error_handler); schedule_work(&ctrl->fatal_err_work); } mutex_unlock(&ctrl->lock); -- 2.19.1