From patchwork Mon Dec 18 15:30:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180494 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1327394dyi; Mon, 18 Dec 2023 07:38:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IEZnXs+p6TYqJGuOjZJVKlWLIylNqKE+pfJ6/tN1SDZqMThO/lMNtsLLBivJWq+J5+dPadS X-Received: by 2002:a17:903:25c3:b0:1d3:b860:5a99 with SMTP id jc3-20020a17090325c300b001d3b8605a99mr881514plb.71.1702913885681; Mon, 18 Dec 2023 07:38:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702913885; cv=none; d=google.com; s=arc-20160816; b=NMAUth0V0Qz2rfkTOTTXjyTmYpTzFdn/kjfEhyx9vli0x7HECPBeNKcxGWPwSjenkj Gyvh9iKDhR+wq0L0wt2WGKV03V0NGRU+uv22kM5MdoMSiRCq+f09VSx2YwCJ9rB1nruL tlICUJGbbiy7dA3JzF56Bq0GOgizGqgYXpF/laTnmB6LDlUnrK5iLmSpck6ziW15t2ON qfWuLax/XbCQ0JZRyTllm5JDrLfS5BimFWIy/YrKLdzCzyjz6s/mgRsPARTq9Mg1e9pk HNE2xmWWwm4e5jv4upHY/XD9IRb9zlA04OnbcDC6MvTod160m+tYy+jubIunkvjKNunj YxiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=r99rVTmaXp3PLbfDNxganSpUb1DQiRb6MbvQzK+q+Ro=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=p7dAIULHrV1y0RQUbOLj7bXVJEiaDA6aIfuowTLP/1GXdrMXf0T80IE5oc2rw+KOCX MHohBsJp8xRaO7CeEop0gbO/izVW6FxYk40FzJamA28LStR/AJgFDApdLBWjeP1V9kME wJJV8WrSb9oovDOcrbDntN+css7bMu1gtjWKAA8CeqOZ0t7ncUNcEugJPybXQ4iUad+J nOnylnxO67HlDoafCyIwp1ytWf0KESJjqW5p3b6QsA4vBtISQ7vlU/rwbKIi78eBkNPz f8nmUaOV/dkpkZH67e0impvyjnE8KshhNODbsFOn7nSWqFih4+t3Tuh96y9t6a0LYqjt 5k9w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3942-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3942-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id ju9-20020a170903428900b001d0a0ee28e0si427231plb.288.2023.12.18.07.38.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 07:38:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3942-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3942-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3942-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 740A9B2269D for ; Mon, 18 Dec 2023 15:36:21 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CD22F3D57D; Mon, 18 Dec 2023 15:35:53 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D20A13D563 for ; Mon, 18 Dec 2023 15:35:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 35F5E1F37E; Mon, 18 Dec 2023 15:35:49 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 2455E13BC8; Mon, 18 Dec 2023 15:35:49 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id unYoCNVmgGUTfQAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:35:49 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 01/16] nvmet: report ioccsz and iorcsz for disc ctrl Date: Mon, 18 Dec 2023 16:30:49 +0100 Message-ID: <20231218153105.12717-2-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Rspamd-Server: rspamd1.dmz-prg2.suse.org X-Spam-Level: X-Spam-Flag: NO X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: -4.00 X-Rspamd-Queue-Id: 35F5E1F37E X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785634630511444942 X-GMAIL-MSGID: 1785634630511444942 The host started to verify the ioccsz and iorcsz values. I/O controllers return valid values but not the discovery controllers. Use the same values as for I/O controllers. Fixes: 2fcd3ab39826 ("nvme-fabrics: check ioccsz and iorcsz") Signed-off-by: Daniel Wagner --- drivers/nvme/target/discovery.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/nvme/target/discovery.c b/drivers/nvme/target/discovery.c index 668d257fa986..e3c4d247dd23 100644 --- a/drivers/nvme/target/discovery.c +++ b/drivers/nvme/target/discovery.c @@ -249,6 +249,7 @@ static void nvmet_execute_disc_identify(struct nvmet_req *req) { struct nvmet_ctrl *ctrl = req->sq->ctrl; struct nvme_id_ctrl *id; + u32 cmd_capsule_size; u16 status = 0; if (!nvmet_check_transfer_len(req, NVME_IDENTIFY_DATA_SIZE)) @@ -294,6 +295,18 @@ static void nvmet_execute_disc_identify(struct nvmet_req *req) strscpy(id->subnqn, ctrl->subsys->subsysnqn, sizeof(id->subnqn)); + /* + * Max command capsule size is sqe + in-capsule data size. + * Disable in-capsule data for Metadata capable controllers. + */ + cmd_capsule_size = sizeof(struct nvme_command); + if (!ctrl->pi_support) + cmd_capsule_size += req->port->inline_data_size; + id->ioccsz = cpu_to_le32(cmd_capsule_size / 16); + + /* Max response capsule size is cqe */ + id->iorcsz = cpu_to_le32(sizeof(struct nvme_completion) / 16); + status = nvmet_copy_to_sgl(req, 0, id, sizeof(*id)); kfree(id); From patchwork Mon Dec 18 15:30:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180507 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1330686dyi; Mon, 18 Dec 2023 07:43:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IHzrY4DFLd7BWaxI3VI7sh89rmJKrVNKAVi5K6jVKcYrMDU49EV+7aF7vVLacDN2wXAPryp X-Received: by 2002:a05:6102:54ac:b0:464:7c8c:e17d with SMTP id bk44-20020a05610254ac00b004647c8ce17dmr12592997vsb.9.1702914209694; Mon, 18 Dec 2023 07:43:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702914209; cv=none; d=google.com; s=arc-20160816; b=hABc0gICtjU3snxZe8HFUm81oYzbK91KVulINTbpTDkkvHSpfp1lxscJh8VriwxYBy ey3+Xz1OtXtNhm8g/xZtUV87ttpr8uSXMB2rMsGpxBY73s7zYz6mUgcjv+mdlxBr6KPF VsF56wlLHQ0VGjx2gfPp9szyLJo3JfvurundsQdf4T/1abPm/3UAxmywIY3yX4EgPjZu pDF8O50M2QKWMxRb/P9pPGPidi/jF2BJHWkCBqGV6vLAAdy/uI+0k5s5X3mRgcTEbVN+ 4cCWX8caa28hVjI//nfSo8jlWOCkka7eWbJVMI3fnlJK82By8KaZmtoFkd1k37pdS4pD fnpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-signature :dkim-signature:dkim-signature; bh=frwg+Fv/Md0nePEz72ENwBzVnmZF61u9zbsIo6n5Yd0=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=sQoxc01ySEloN8YhKiLy7h8soTw+zExcLhxGuls2eL4XfokgQGz5xEnP/X+QHWgnzq nOpdxTvJENOMw5TSTFJf8Fj5Z1BuqP9VlEF5/7Fsbv+iIgNYPBZl0sFMmuU+xYRecb3E r/RraVnsQ53YQG7wuhTuWRFXC4JwwLqL6D7mVsqatKlsjNAzTUveo6MwklWn4Zdif+N+ OT4zUA+FyS9QGyJLr3LtGA7LYmtpeJ5lRP0R9cR5xoC6ZcuS1bV+1LXH48d3IGX7LA1v 0ldMyj3s4P0L8fnYoOmBOWXEP0/zJsHCKFUJ+WMsKiSLpI0ZF6J0ue6wQl5tLMLvqXk3 WTZg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=BImCcHWe; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=BImCcHWe; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=LozNsC1+; spf=pass (google.com: domain of linux-kernel+bounces-3962-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3962-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id y25-20020a67e8d9000000b00466943a159bsi320820vsn.306.2023.12.18.07.43.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 07:43:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3962-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=BImCcHWe; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=BImCcHWe; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=LozNsC1+; spf=pass (google.com: domain of linux-kernel+bounces-3962-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3962-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 783251C24D6E for ; Mon, 18 Dec 2023 15:43:29 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CDCEE5A872; Mon, 18 Dec 2023 15:38:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="BImCcHWe"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="LozNsC1+"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="BImCcHWe"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="LozNsC1+" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 711395A84A for ; Mon, 18 Dec 2023 15:38:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [10.150.64.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 167DE1F37E; Mon, 18 Dec 2023 15:38:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702913884; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=frwg+Fv/Md0nePEz72ENwBzVnmZF61u9zbsIo6n5Yd0=; b=BImCcHWe6ul37PlrDid7FsfnhEKN8g9Zj740OF1fUEcjvGCEynQjHs+5RN/wfG7bINC+qN YDl6OBhF5HdgZsriUAYHyDPQOeVBnGDBCg4mgGRgEn5mkda7T1HpD/0KdmztxNHggRTVkA KQPecU/lPWGZw3bOu+hQ5uayjx1P2e8= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702913884; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=frwg+Fv/Md0nePEz72ENwBzVnmZF61u9zbsIo6n5Yd0=; b=LozNsC1+/s2Kyk6sJQCld43PHLM5pzF0qO+YhaIYuLxsyeBg6GUYcfwR9/tT5Puq3ZJnM3 8LlOPzIknls0o6CA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702913884; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=frwg+Fv/Md0nePEz72ENwBzVnmZF61u9zbsIo6n5Yd0=; b=BImCcHWe6ul37PlrDid7FsfnhEKN8g9Zj740OF1fUEcjvGCEynQjHs+5RN/wfG7bINC+qN YDl6OBhF5HdgZsriUAYHyDPQOeVBnGDBCg4mgGRgEn5mkda7T1HpD/0KdmztxNHggRTVkA KQPecU/lPWGZw3bOu+hQ5uayjx1P2e8= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702913884; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=frwg+Fv/Md0nePEz72ENwBzVnmZF61u9zbsIo6n5Yd0=; b=LozNsC1+/s2Kyk6sJQCld43PHLM5pzF0qO+YhaIYuLxsyeBg6GUYcfwR9/tT5Puq3ZJnM3 8LlOPzIknls0o6CA== Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 027E913BC8; Mon, 18 Dec 2023 15:38:04 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id AT5RAFxngGWufQAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:38:03 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 02/16] nvmet-fc: remove unnecessary bracket Date: Mon, 18 Dec 2023 16:30:50 +0100 Message-ID: <20231218153105.12717-3-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: X-Spamd-Result: default: False [0.82 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; REPLY(-4.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCPT_COUNT_SEVEN(0.00)[8]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.08)[63.42%] Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: 0.82 X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785634970221344463 X-GMAIL-MSGID: 1785634970221344463 There is no need for the bracket around the identifier. Remove it. Signed-off-by: Daniel Wagner Reviewed-by: Christoph Hellwig Reviewed-by: Hannes Reinecke --- drivers/nvme/target/fc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index bd59990b5250..bda7a3009e85 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -1031,7 +1031,7 @@ nvmet_fc_match_hostport(struct nvmet_fc_tgtport *tgtport, void *hosthandle) list_for_each_entry(host, &tgtport->host_list, host_list) { if (host->hosthandle == hosthandle && !host->invalid) { if (nvmet_fc_hostport_get(host)) - return (host); + return host; } } From patchwork Mon Dec 18 15:30:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180508 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1331643dyi; Mon, 18 Dec 2023 07:45:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IHMfxWHL5OBGZiqBO/IgJ6xcjZ6cNjjtfPzVfUnUjj5kcLYk59sgN3PFEgFuzv1zwCy36Kd X-Received: by 2002:a05:6102:3f42:b0:466:5d06:a32e with SMTP id l2-20020a0561023f4200b004665d06a32emr5524285vsv.35.1702914309408; Mon, 18 Dec 2023 07:45:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702914309; cv=none; d=google.com; s=arc-20160816; b=DtW107zzPIqz6LxwmeUkujiKgKOBDkQjMSkCpj/r5NeiUWFPPBmmKKH2kdKQdiVt8P nfRYe3AYx7vC1Ng74iZnnBjcVHbdwfHbyqEkSZ+2k995YRROss+ZOnjYLJPSQwzWTHTc TZnynPB8Vrd14nEcGNl6dDI2B8/Ga3TAmScBz7DDAnxYDPe79tmSs/oS0/KlnIH9L33Q gB74yUSCSlF688mq/mnYVNSwk+uqeoe5F6RglijkYsz45KU+gzOnMBCPmDlNnfDx8THC UldoAxLf0IxKThmQeOgctpug3uSCxsHJRNEGCuHIPfFk/g/uP3SosDFi3Uf9Trsj0Q+O t3hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=WmGbFZgPLEWRxrByvQIF4tg/kOGwmPLLe2myu0vL0CQ=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=OcOD7wxmFIfoammMZWqv1GdxXx09AwWLkku9PO5tHUj9laIpYeUbnKZH2cj4DlKTEo GlbS7GuElK42jBIP4k3G9Ipwq/06XJtF3tWdaGQ4mM2Ay0N+SN02oE+Y9BJDIz0vkmjQ AxDyqxm+ohiLAJ4ZZR1cCWcZ5RnajwOScff/iQuVoCBXhWlKslO0N/VAf0mHvqn1RAxC +qx+69Yoezn1nDsqD//u7fJKcu2BW8+ryd+wb4OKvsnSidHgDawIzIPkypFDHH0I1AZP Rd1+fu9wmXIDNf4ObO31Wl3AltWN8LsA/53ppw1vSmdvDwVsOG291M38xp+zKFSgRA3F fiKA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3965-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3965-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id p9-20020a056102124900b004668dbd83e9si375355vsg.100.2023.12.18.07.45.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 07:45:09 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3965-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3965-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3965-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 318231C22B7F for ; Mon, 18 Dec 2023 15:45:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 037737147C; Mon, 18 Dec 2023 15:40:28 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 961D442378 for ; Mon, 18 Dec 2023 15:40:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id E234B21F89; Mon, 18 Dec 2023 15:40:22 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id D020513BC8; Mon, 18 Dec 2023 15:40:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id rfZ7MuZngGVBfgAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:40:22 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 03/16] nvmet-trace: avoid dereferencing pointer too early Date: Mon, 18 Dec 2023 16:30:51 +0100 Message-ID: <20231218153105.12717-4-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Rspamd-Server: rspamd1.dmz-prg2.suse.org X-Spam-Level: X-Spam-Flag: NO X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] Authentication-Results: smtp-out1.suse.de; none X-Spam-Score: -4.00 X-Rspamd-Queue-Id: E234B21F89 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785635074649921041 X-GMAIL-MSGID: 1785635074649921041 The first command issued from the host to the target is the fabrics connect command. At this point, neither the target queue nor the controller have been allocated. But we already try to trace this command in nvmet_req_init. Reported by KASAN. Reviewed-by: Hannes Reinecke Signed-off-by: Daniel Wagner Reviewed-by: Christoph Hellwig --- drivers/nvme/target/trace.c | 6 +++--- drivers/nvme/target/trace.h | 28 +++++++++++++++++----------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/drivers/nvme/target/trace.c b/drivers/nvme/target/trace.c index bff454d46255..6ee1f3db81d0 100644 --- a/drivers/nvme/target/trace.c +++ b/drivers/nvme/target/trace.c @@ -211,7 +211,7 @@ const char *nvmet_trace_disk_name(struct trace_seq *p, char *name) return ret; } -const char *nvmet_trace_ctrl_name(struct trace_seq *p, struct nvmet_ctrl *ctrl) +const char *nvmet_trace_ctrl_id(struct trace_seq *p, u16 ctrl_id) { const char *ret = trace_seq_buffer_ptr(p); @@ -224,8 +224,8 @@ const char *nvmet_trace_ctrl_name(struct trace_seq *p, struct nvmet_ctrl *ctrl) * If we can know the extra data of the connect command in this stage, * we can update this print statement later. */ - if (ctrl) - trace_seq_printf(p, "%d", ctrl->cntlid); + if (ctrl_id) + trace_seq_printf(p, "%d", ctrl_id); else trace_seq_printf(p, "_"); trace_seq_putc(p, 0); diff --git a/drivers/nvme/target/trace.h b/drivers/nvme/target/trace.h index 6109b3806b12..68f5317b1251 100644 --- a/drivers/nvme/target/trace.h +++ b/drivers/nvme/target/trace.h @@ -32,18 +32,24 @@ const char *nvmet_trace_parse_fabrics_cmd(struct trace_seq *p, u8 fctype, nvmet_trace_parse_nvm_cmd(p, opcode, cdw10) : \ nvmet_trace_parse_admin_cmd(p, opcode, cdw10))) -const char *nvmet_trace_ctrl_name(struct trace_seq *p, struct nvmet_ctrl *ctrl); -#define __print_ctrl_name(ctrl) \ - nvmet_trace_ctrl_name(p, ctrl) +const char *nvmet_trace_ctrl_id(struct trace_seq *p, u16 ctrl_id); +#define __print_ctrl_id(ctrl_id) \ + nvmet_trace_ctrl_id(p, ctrl_id) const char *nvmet_trace_disk_name(struct trace_seq *p, char *name); #define __print_disk_name(name) \ nvmet_trace_disk_name(p, name) #ifndef TRACE_HEADER_MULTI_READ -static inline struct nvmet_ctrl *nvmet_req_to_ctrl(struct nvmet_req *req) +static inline u16 nvmet_req_to_ctrl_id(struct nvmet_req *req) { - return req->sq->ctrl; + /* + * The queue and controller pointer are not valid until an association + * has been established. + */ + if (!req->sq || !req->sq->ctrl) + return 0; + return req->sq->ctrl->cntlid; } static inline void __assign_req_name(char *name, struct nvmet_req *req) @@ -63,7 +69,7 @@ TRACE_EVENT(nvmet_req_init, TP_ARGS(req, cmd), TP_STRUCT__entry( __field(struct nvme_command *, cmd) - __field(struct nvmet_ctrl *, ctrl) + __field(u16, ctrl_id) __array(char, disk, DISK_NAME_LEN) __field(int, qid) __field(u16, cid) @@ -76,7 +82,7 @@ TRACE_EVENT(nvmet_req_init, ), TP_fast_assign( __entry->cmd = cmd; - __entry->ctrl = nvmet_req_to_ctrl(req); + __entry->ctrl_id = nvmet_req_to_ctrl_id(req); __assign_req_name(__entry->disk, req); __entry->qid = req->sq->qid; __entry->cid = cmd->common.command_id; @@ -90,7 +96,7 @@ TRACE_EVENT(nvmet_req_init, ), TP_printk("nvmet%s: %sqid=%d, cmdid=%u, nsid=%u, flags=%#x, " "meta=%#llx, cmd=(%s, %s)", - __print_ctrl_name(__entry->ctrl), + __print_ctrl_id(__entry->ctrl_id), __print_disk_name(__entry->disk), __entry->qid, __entry->cid, __entry->nsid, __entry->flags, __entry->metadata, @@ -104,7 +110,7 @@ TRACE_EVENT(nvmet_req_complete, TP_PROTO(struct nvmet_req *req), TP_ARGS(req), TP_STRUCT__entry( - __field(struct nvmet_ctrl *, ctrl) + __field(u16, ctrl_id) __array(char, disk, DISK_NAME_LEN) __field(int, qid) __field(int, cid) @@ -112,7 +118,7 @@ TRACE_EVENT(nvmet_req_complete, __field(u16, status) ), TP_fast_assign( - __entry->ctrl = nvmet_req_to_ctrl(req); + __entry->ctrl_id = nvmet_req_to_ctrl_id(req); __entry->qid = req->cq->qid; __entry->cid = req->cqe->command_id; __entry->result = le64_to_cpu(req->cqe->result.u64); @@ -120,7 +126,7 @@ TRACE_EVENT(nvmet_req_complete, __assign_req_name(__entry->disk, req); ), TP_printk("nvmet%s: %sqid=%d, cmdid=%u, res=%#llx, status=%#x", - __print_ctrl_name(__entry->ctrl), + __print_ctrl_id(__entry->ctrl_id), __print_disk_name(__entry->disk), __entry->qid, __entry->cid, __entry->result, __entry->status) From patchwork Mon Dec 18 15:30:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180521 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1340282dyi; Mon, 18 Dec 2023 07:59:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IEqcoi+SBycY085JcbHnxQRiVa9bS1jgTW2dyz2zCfUIndOCYrKwok5CM/GqkmMEnxpf4fi X-Received: by 2002:a17:906:2084:b0:a23:b8e:15c with SMTP id 4-20020a170906208400b00a230b8e015cmr2318502ejq.25.1702915189396; Mon, 18 Dec 2023 07:59:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702915189; cv=none; d=google.com; s=arc-20160816; b=mg3Z8lCmMtmdyK0QEOYw0ugBaMSK8Bo/kk+Y029rxXl+c7OxW9iuT4p1MNgBX7EXlb LgBME/SCUaf9W2qTzCeNn1RDBgkZDhSbFsnk/lgqkpSrjsJXSl62G9nGtEYqAj7rnA/E 4LHaEMNaCHaB8ihIpkkHNYODfZHtCDeYc1r1DNLS67dnrpk4Qa4/kNGIzc6209IiVGj6 QiT7gtwDPMk8TKG2QI0VqDtIVQ4UXm1u7eVlwHaBSNSq37U7m6MiZjlXQku9/10D44ki QmTI8I3xoKMqFsGQxpTrrtfbY5M4XAlGD2NSR9uWQqUqsetvsxUtK3wLYyKXS5bWhgMc Clwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-signature :dkim-signature:dkim-signature; bh=v1dKZcA4ezXwEdxeSlAbqNEVQJZBbN3wkn2D2BYxnGI=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=otSs8I7QTU3ZkK7K+vjQvhu6n90rDM4c/5yj7/oepMDbXDmqAsFyp955K0ZUFQ30M0 DWRDrkSn2TWTmjaNKKig55+HOvqLj4O4Vv6/zM2LIFUcrY05sW/jJaYre9vPct8fRBPv /Oogy9nj7PLpkGWYmg7erFwGg4wphGnIyb9WXNrgh3WH4JZNc5XEmjer2k+g3rpAhqcs 8Wirt0Dk/HgIfHbes1ZqE73KmerbTmCms4mKqrnXN+JSYeJENEQxVZ77JOopRldjJB31 UGByXg53Z9EGOmTEkuUGqgv9FfyHXP3skvjqQ2ubWFmDnQTV25awiD2b5ZoI78gnfYrH 0z2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=L19Sc9vV; dkim=neutral (no key) header.i=@suse.de; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=L19Sc9vV; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=DqqX81U+; spf=pass (google.com: domain of linux-kernel+bounces-3971-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3971-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id d23-20020a170906c21700b00a1d5063b01fsi9987238ejz.834.2023.12.18.07.59.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 07:59:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3971-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=L19Sc9vV; dkim=neutral (no key) header.i=@suse.de; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=L19Sc9vV; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=DqqX81U+; spf=pass (google.com: domain of linux-kernel+bounces-3971-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3971-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id C1DDC1F2535A for ; Mon, 18 Dec 2023 15:47:46 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9FF3E74E27; Mon, 18 Dec 2023 15:42:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="L19Sc9vV"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="DqqX81U+"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="L19Sc9vV"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="DqqX81U+" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E6B9E74E04 for ; Mon, 18 Dec 2023 15:42:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [10.150.64.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 154B71F37E; Mon, 18 Dec 2023 15:42:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702914157; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v1dKZcA4ezXwEdxeSlAbqNEVQJZBbN3wkn2D2BYxnGI=; b=L19Sc9vVeoGzkuaT2qhVSvnG1e+bsLsIbDUptKVOlITXwsbz8oar6ZZiFL7/YNxqipOTqr /Nz3myfKu/2YrcLBQ5sEOOAO39HhKdsxqEgACVxrUl5wyRvzZGvuJf7GJvH8s4g5HN28pg SV4xV6TSZxp67M6sRZDmFOe0T4RRR+g= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702914157; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v1dKZcA4ezXwEdxeSlAbqNEVQJZBbN3wkn2D2BYxnGI=; b=DqqX81U+go088EIo54twaH9n2d7KVeW8hu+UFLich8bj+0EIpHlQFpXv3AFSLrcDJipvhD E21TFtbKbh+D93AQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702914157; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v1dKZcA4ezXwEdxeSlAbqNEVQJZBbN3wkn2D2BYxnGI=; b=L19Sc9vVeoGzkuaT2qhVSvnG1e+bsLsIbDUptKVOlITXwsbz8oar6ZZiFL7/YNxqipOTqr /Nz3myfKu/2YrcLBQ5sEOOAO39HhKdsxqEgACVxrUl5wyRvzZGvuJf7GJvH8s4g5HN28pg SV4xV6TSZxp67M6sRZDmFOe0T4RRR+g= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702914157; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v1dKZcA4ezXwEdxeSlAbqNEVQJZBbN3wkn2D2BYxnGI=; b=DqqX81U+go088EIo54twaH9n2d7KVeW8hu+UFLich8bj+0EIpHlQFpXv3AFSLrcDJipvhD E21TFtbKbh+D93AQ== Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 06A4213BC8; Mon, 18 Dec 2023 15:42:37 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id ea/SAG1ogGXOfgAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:42:37 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 04/16] nvmet-trace: null terminate device name string correctly Date: Mon, 18 Dec 2023 16:30:52 +0100 Message-ID: <20231218153105.12717-5-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: X-Spamd-Result: default: False [0.90 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; REPLY(-4.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCPT_COUNT_SEVEN(0.00)[8]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.00)[44.81%] Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: 0.90 X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785635997548564845 X-GMAIL-MSGID: 1785635997548564845 strlen returns the string length excluding the null byte ('\0'), thus we cut the last chars from the device name. While at it, switch snprintf to ensure we always have properly terminated string. Reviewed-by: Hannes Reinecke Signed-off-by: Daniel Wagner Reviewed-by: Christoph Hellwig --- drivers/nvme/target/trace.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/nvme/target/trace.h b/drivers/nvme/target/trace.h index 68f5317b1251..952e69f9737f 100644 --- a/drivers/nvme/target/trace.h +++ b/drivers/nvme/target/trace.h @@ -59,8 +59,9 @@ static inline void __assign_req_name(char *name, struct nvmet_req *req) return; } - strncpy(name, req->ns->device_path, - min_t(size_t, DISK_NAME_LEN, strlen(req->ns->device_path))); + snprintf(name, + min_t(size_t, DISK_NAME_LEN, strlen(req->ns->device_path) + 1), + "%s", req->ns->device_path); } #endif From patchwork Mon Dec 18 15:30:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180511 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1333767dyi; Mon, 18 Dec 2023 07:48:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IGAhF/5yMiKiM5xkqWZSXG+ervF/112D3pkLoF+vbuaf93HaaaqmstaYYJjfmoliFpimPYq X-Received: by 2002:a05:6a00:3a13:b0:6c3:3213:2d17 with SMTP id fj19-20020a056a003a1300b006c332132d17mr8650138pfb.29.1702914522514; Mon, 18 Dec 2023 07:48:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702914522; cv=none; d=google.com; s=arc-20160816; b=J3cUZHduu8lEVctdsaktjUSs7A5KAAYONrBhL4J+/bQ5TPNZ5ShkKX3B64qpwhV++1 7VJoaQywp23eqMRyKOTzxmL65xT40zHidfbVhIP/elT/Md2/lMkVhzsu84vsGezNMueG Y9S6sNQ2tEpNdYRti2iLgvAIbSjanucgtrSPZZeEgUGo9Q0sdKzlUsmdWB3nZ8IrroyT DRJcenDM3AV/wIAdmFbNATpNW0B+hrDnxWLIJKeDBB0CicCm4h0VxYv459WAYtTb8mCH K6PA1zqcPwSOGJGLtrGRHWafYoKieKrsVSHps4s6IXEseNNQwfoKhq1OnEUyR2XJZ3UU 59Ng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-signature :dkim-signature:dkim-signature; bh=Sb3ykHY0s0lUwPOEpTQTKX0dDN9JeufCaNGO/9uVytU=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=Jm9JtcppN31/RqXp+Jml44p+i/4wvPGswle4sAq3eAPicHU6pkbBI4r1j3NUkRFl++ MwZ5MV6EVB71F8DXMxnWOjF7PIRVgxG77CHHB55dpNKmVGxjX/wPpGyJC2Tgk5PqQ7k4 Fq4UmERefS+kEdKaNbzUXy8duB99Tm6tqGnetyuT8ao1i+07NiUjyPkf0wEv4veqmCqt meAwcbOogULZy2I/KUH06MYollrNow1UprsZSBznSPhWsAY4bAIkZndWwtcZbdXsIP4l CzLEN8MRWquN5JhZbJgR3kFH8rgwVaTU6cBSIX7kys+bk1Wvok7XJBglMWMM4FXWkYaM FXIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=bRdcAkZQ; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=wpY+fyfs; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=Z7Sht93I; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; spf=pass (google.com: domain of linux-kernel+bounces-3973-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3973-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id cd25-20020a056a00421900b006d56f59b679si3082089pfb.244.2023.12.18.07.48.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 07:48:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3973-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=bRdcAkZQ; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=wpY+fyfs; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=Z7Sht93I; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; spf=pass (google.com: domain of linux-kernel+bounces-3973-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3973-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 4D03A280C17 for ; Mon, 18 Dec 2023 15:48:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D960942398; Mon, 18 Dec 2023 15:44:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="bRdcAkZQ"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="wpY+fyfs"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="Z7Sht93I"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="uJTPrEe7" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C09C61D137 for ; Mon, 18 Dec 2023 15:44:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [10.150.64.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id E189D21F89; Mon, 18 Dec 2023 15:44:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702914292; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Sb3ykHY0s0lUwPOEpTQTKX0dDN9JeufCaNGO/9uVytU=; b=bRdcAkZQuGRc4eQLw8ed49JvJ7Vz8idsz8j/Wbfj/yVy2XjvOLN5efe/lr/1nDGkP+1/kz LZENPBUvI4z+UmS6M4SAJWafIV0VkmYbeTsz99MTUSqfcyncTA/4dbZs/gYYGrAjO98CGy WL7ngNsoGrjHNiDdf47DJdPjF6K+vAk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702914292; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Sb3ykHY0s0lUwPOEpTQTKX0dDN9JeufCaNGO/9uVytU=; b=wpY+fyfsAzV3vI0PMl2YLuPGwEFIpcNTLrOMAUMvhb8h81BjXgoCJzwMTJo6IePAH0qI3v wRmb+CQgp0vHTnBA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702914291; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Sb3ykHY0s0lUwPOEpTQTKX0dDN9JeufCaNGO/9uVytU=; b=Z7Sht93ICnE3oJDjxdA3ZdGBvvJE7nzAtpMfLo3kmbUoWuu1SGISjK3u23uQEG/rcuzDli kfp91NBUtdKE/Gtd2eCV6H0YFFK3/kDlBDITsvEUYb48kfTvdxUNScqRe/ypdLbnFO/nsx GHFCyGRkr5NxGJAK+NRTF//sc5jd19Y= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702914291; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Sb3ykHY0s0lUwPOEpTQTKX0dDN9JeufCaNGO/9uVytU=; b=uJTPrEe7Jte0p/vm4b2wzrm1nulDkFRFrtN3wQa+G3fQyMA/LsHG1w0Cl9V9dMC2A8VrqC Mi0CRnmHxZY68LAA== Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id D2B2113BC8; Mon, 18 Dec 2023 15:44:51 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id S4h/MvNogGXqfgAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:44:51 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 05/16] nvmet-fcloop: Remove remote port from list when unlinking Date: Mon, 18 Dec 2023 16:30:53 +0100 Message-ID: <20231218153105.12717-6-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: X-Spamd-Result: default: False [0.89 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; REPLY(-4.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCPT_COUNT_SEVEN(0.00)[8]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.01)[49.98%] Authentication-Results: smtp-out1.suse.de; none X-Spam-Score: 0.89 X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785635298233329971 X-GMAIL-MSGID: 1785635298233329971 The remote port is removed too late from fcloop_nports list. Remove it when port is unregistered. This prevents a busy loop in fcloop_exit, because it is possible the remote port is found in the list and thus we will never progress. The kernel log will be spammed with nvme_fcloop: fcloop_exit: Failed deleting remote port nvme_fcloop: fcloop_exit: Failed deleting target port Signed-off-by: Daniel Wagner Reviewed-by: Christoph Hellwig Reviewed-by: Hannes Reinecke --- drivers/nvme/target/fcloop.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/nvme/target/fcloop.c b/drivers/nvme/target/fcloop.c index c65a73433c05..ead349af30f1 100644 --- a/drivers/nvme/target/fcloop.c +++ b/drivers/nvme/target/fcloop.c @@ -995,11 +995,6 @@ fcloop_nport_free(struct kref *ref) { struct fcloop_nport *nport = container_of(ref, struct fcloop_nport, ref); - unsigned long flags; - - spin_lock_irqsave(&fcloop_lock, flags); - list_del(&nport->nport_list); - spin_unlock_irqrestore(&fcloop_lock, flags); kfree(nport); } @@ -1357,6 +1352,8 @@ __unlink_remote_port(struct fcloop_nport *nport) nport->tport->remoteport = NULL; nport->rport = NULL; + list_del(&nport->nport_list); + return rport; } From patchwork Mon Dec 18 15:30:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180512 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1335004dyi; Mon, 18 Dec 2023 07:50:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IEKfB4L3dBfDBiu/HFB1b4vVxDhKL//7QcowZaoeM/ZllczA/SlvdFDiM5HbcjvlnzrYrSw X-Received: by 2002:a05:620a:3cf:b0:77e:fba3:a7b9 with SMTP id r15-20020a05620a03cf00b0077efba3a7b9mr12621142qkm.151.1702914644116; Mon, 18 Dec 2023 07:50:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702914644; cv=none; d=google.com; s=arc-20160816; b=GqPQq2BhLlME9AsQTxCOJxuBIsQE8t2qD5X9cKI9qtZI1n1g0e9Tk006XtZB1BTGPx TKhvt7QzTJLvnrMvgJOkrOUTTqQOxYFb/htoFmH6CBC/4S1MWG2t3dDD5KBDxR5hSj/v 3WHWO6mcbUBmMWc/6345MXJYBhTuRdT86RBlU761cLwSP1Mf00xM6abZ87m/ryolhnDR lr4ZXfx2CJd6K+lzh8lKVSbiqkN2liqmp1RyoPV4SFHah9kMXbpJKOul6cISEiJGMvCe 5AE5TW3bWZcilkIwz4QKfGOnITANpLLF2/raDeDWUy/y7xh+fq6MatMzH1Mu+mTsbt3L JjpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=XCpq8w414a7BDblV4IDtR9Mt7GInJ9kRHufQbtJxaVQ=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=JqTWGGl7cnbhXdsURqzqlVJSt/v5VKA23qC5WmlgH2uWDMIMnH57SgwZQo0C4ZD0Xo 0P8hQBwFY329aFUsYIEOo9sCY9Tk8VkRHU8UGOMOAMimOfrSojfxpcnbqn6MRk9aTjX4 eB9bb3rGYeXuQydEHRv9ekNGfiqDkygrCmX7Q2dBMPZ6o5Y2C0QaViXMMUKcsSg4ZFMK SD9v8vgsNwV/CB4u/gJO9CIOTEWTcgNF2ZgcNsnDmj1Q7/QPUKIq5T8uteFkAOsX302v ak5V+RWp2bm0IJ1gcRkaSsIZLcYRqN7psdkcdvUSo29VTM2MheYN4lXfYEAOAaFlaFUi A2UQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3980-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3980-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id ay31-20020a05620a179f00b0077dcc7be14esi1339928qkb.140.2023.12.18.07.50.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 07:50:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3980-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3980-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3980-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id DAD8B1C22D8A for ; Mon, 18 Dec 2023 15:50:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3D12F498AA; Mon, 18 Dec 2023 15:47:11 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6E6073A1D0 for ; Mon, 18 Dec 2023 15:47:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id B729621F89; Mon, 18 Dec 2023 15:47:06 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id A811913BC8; Mon, 18 Dec 2023 15:47:06 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id NjsuKHppgGUXfwAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:47:06 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 06/16] nvme-fc: Do not wait in vain when unloading module Date: Mon, 18 Dec 2023 16:30:54 +0100 Message-ID: <20231218153105.12717-7-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Rspamd-Server: rspamd1.dmz-prg2.suse.org X-Spam-Level: X-Spam-Flag: NO X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] Authentication-Results: smtp-out1.suse.de; none X-Spam-Score: -4.00 X-Rspamd-Queue-Id: B729621F89 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785635426133375489 X-GMAIL-MSGID: 1785635426133375489 The module unload code will wait for a controller to be delete even when there is no controller and we wait for completion forever to happen. Thus only wait for the completion when there is a controller which needs to be removed. Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/nvme/host/fc.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index 15dc9dfe88a9..69f7943c5056 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -3947,10 +3947,11 @@ static int __init nvme_fc_init_module(void) return ret; } -static void +static bool nvme_fc_delete_controllers(struct nvme_fc_rport *rport) { struct nvme_fc_ctrl *ctrl; + bool cleanup = false; spin_lock(&rport->lock); list_for_each_entry(ctrl, &rport->ctrl_list, ctrl_list) { @@ -3958,21 +3959,28 @@ nvme_fc_delete_controllers(struct nvme_fc_rport *rport) "NVME-FC{%d}: transport unloading: deleting ctrl\n", ctrl->cnum); nvme_delete_ctrl(&ctrl->ctrl); + cleanup = true; } spin_unlock(&rport->lock); + + return cleanup; } -static void +static bool nvme_fc_cleanup_for_unload(void) { struct nvme_fc_lport *lport; struct nvme_fc_rport *rport; + bool cleanup = false; list_for_each_entry(lport, &nvme_fc_lport_list, port_list) { list_for_each_entry(rport, &lport->endp_list, endp_list) { - nvme_fc_delete_controllers(rport); + if (nvme_fc_delete_controllers(rport)) + cleanup = true; } } + + return cleanup; } static void __exit nvme_fc_exit_module(void) @@ -3982,10 +3990,8 @@ static void __exit nvme_fc_exit_module(void) spin_lock_irqsave(&nvme_fc_lock, flags); nvme_fc_waiting_to_unload = true; - if (!list_empty(&nvme_fc_lport_list)) { - need_cleanup = true; - nvme_fc_cleanup_for_unload(); - } + if (!list_empty(&nvme_fc_lport_list)) + need_cleanup = nvme_fc_cleanup_for_unload(); spin_unlock_irqrestore(&nvme_fc_lock, flags); if (need_cleanup) { pr_info("%s: waiting for ctlr deletes\n", __func__); From patchwork Mon Dec 18 15:30:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180514 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1335947dyi; Mon, 18 Dec 2023 07:52:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IGufo79QRDc25ZgTBvF8HDM0iCIJQk7QsD6KK6UL1K/IFTUitA2HZlXQZsV0Kc/gCUBlnsa X-Received: by 2002:a17:902:e5c7:b0:1d3:bceb:ba88 with SMTP id u7-20020a170902e5c700b001d3bcebba88mr935602plf.11.1702914743137; Mon, 18 Dec 2023 07:52:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702914743; cv=none; d=google.com; s=arc-20160816; b=s90dGz4Dl0h2pbMBz9avmgoug1X0yCIJ0BlKtbAe+6IaTx9udKLwcJLzfSrcxm0mGK VESDDHPOBEqCdWljoyeNKsoLv1Cd93ERHTfOzjUPLkX95BNWflvEq0a4BEchYlUrA7dE g7j1CcODsG9f8Ds9NnW8dWK8Rw4wc6JQ2WAZFsNGS3mGYu7i6qWreOPvh9Az4EP2qg1m SwSjI6z295flOfwnHqNy42xPVZZuQuuAlUzQCfvI5ax/f1uitAmkJNtVrZytYNeEVwmz QnnkOZF4w5OQ2IN4GbmvW2dlAwyRIkvbR6hMbnbC7cJTqHryFF24nohJRDSNb2ZqO8AX Sc7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-signature :dkim-signature:dkim-signature; bh=jEDhLc4jQdXXTJgtSxhlyCdpiTkBcsIA12np3rAsa8Y=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=NFpqxCx7EfDz9K1JCth9o2FxAGHGVnwU6oY2Q+o4CDFTUK2WvdTLWmAyhqOM+WMNyR ahgQ/obZ4hDWg1sqzkYrukp/4hK4sXxr6arIhW1u5dKVxJJzy/Uv7n4auljAuuTJkrCe qb6br8LO10FI+IJb+Fag2s2EAw8ACKbwaMPvtPxjgVjQAlmLzMrLGdgqALfWEH16539z 5kTRMNlZqe4pjJss/tj6Di9mZZcaooXf8HpgyJO52E2tt962MixvPKWXmy/6mwxZfyyV DXdvBEFA6sh8SKpGLiwy3n9yhliHemEz+r0a+Sfk5i48rBfVGp1OwDbX2a2JqLJwcHDM fBbA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b="I1WW/2Yi"; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b="I1WW/2Yi"; dkim=neutral (no key) header.i=@suse.de; spf=pass (google.com: domain of linux-kernel+bounces-3986-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3986-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id u13-20020a170902e5cd00b001cfb4bd0e36si18677148plf.341.2023.12.18.07.52.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 07:52:23 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3986-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b="I1WW/2Yi"; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b="I1WW/2Yi"; dkim=neutral (no key) header.i=@suse.de; spf=pass (google.com: domain of linux-kernel+bounces-3986-ouuuleilei=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3986-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id DD8472847DE for ; Mon, 18 Dec 2023 15:52:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 645C35BF83; Mon, 18 Dec 2023 15:49:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="I1WW/2Yi"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="WVXkYC6f"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="I1WW/2Yi"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="WVXkYC6f" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4685B5A84D for ; Mon, 18 Dec 2023 15:49:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [10.150.64.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 88D411FD48; Mon, 18 Dec 2023 15:49:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702914561; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jEDhLc4jQdXXTJgtSxhlyCdpiTkBcsIA12np3rAsa8Y=; b=I1WW/2YiqJ8hfTQulgEFb5CoSJKSeekBRCgLecy5L/P68I/YNUgiUCTAv24YVZ6BWy15Dw xPd2asIL8jWv6E1fs/PxgtInhi9WqYDkk+zZf6ogvsH7f1nJYxe2Lx9zL2hqxGF3EZ/Ceh AMz4upviPFh8SDeAWjGTvU5mIQEj7kQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702914561; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jEDhLc4jQdXXTJgtSxhlyCdpiTkBcsIA12np3rAsa8Y=; b=WVXkYC6fLXCf+XlHomWRGhXfGDDfHIc0zid4fUcE4NM/ePwwQgFtjou79jbj1eB+Hpe9uQ OfST+GZYumbPFlCA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702914561; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jEDhLc4jQdXXTJgtSxhlyCdpiTkBcsIA12np3rAsa8Y=; b=I1WW/2YiqJ8hfTQulgEFb5CoSJKSeekBRCgLecy5L/P68I/YNUgiUCTAv24YVZ6BWy15Dw xPd2asIL8jWv6E1fs/PxgtInhi9WqYDkk+zZf6ogvsH7f1nJYxe2Lx9zL2hqxGF3EZ/Ceh AMz4upviPFh8SDeAWjGTvU5mIQEj7kQ= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702914561; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jEDhLc4jQdXXTJgtSxhlyCdpiTkBcsIA12np3rAsa8Y=; b=WVXkYC6fLXCf+XlHomWRGhXfGDDfHIc0zid4fUcE4NM/ePwwQgFtjou79jbj1eB+Hpe9uQ OfST+GZYumbPFlCA== Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 7B06C13BC8; Mon, 18 Dec 2023 15:49:21 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id Xw4QHQFqgGWSfwAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:49:21 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 07/16] nvmet-fc: Release reference on target port Date: Mon, 18 Dec 2023 16:30:55 +0100 Message-ID: <20231218153105.12717-8-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: X-Spamd-Result: default: False [0.79 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; REPLY(-4.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCPT_COUNT_SEVEN(0.00)[8]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.11)[66.19%] Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: 0.79 X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785635529511838442 X-GMAIL-MSGID: 1785635529511838442 In case we return early out of __nvmet_fc_finish_ls_req() we still have to release the reference on the target port. Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/nvme/target/fc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index bda7a3009e85..28e432e62361 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -360,6 +360,7 @@ __nvmet_fc_finish_ls_req(struct nvmet_fc_ls_req_op *lsop) if (!lsop->req_queued) { spin_unlock_irqrestore(&tgtport->lock, flags); + nvmet_fc_tgtport_put(tgtport); return; } From patchwork Mon Dec 18 15:30:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180515 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1336129dyi; Mon, 18 Dec 2023 07:52:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IE6oq3rEd/cHEJzJtiEVs9n9sErkoM5WdfPBj5kvInx0G8kDYQFBaQlXaVbKw4uwnMkc12Z X-Received: by 2002:a05:6102:1628:b0:466:9c5a:e57 with SMTP id cu40-20020a056102162800b004669c5a0e57mr814694vsb.14.1702914761954; Mon, 18 Dec 2023 07:52:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702914761; cv=none; d=google.com; s=arc-20160816; b=I248YVa31cAg2m+7SuQVl/o/a15g6c3r6ToP7YqGo+kQeqk92ogFlYCcwbcz6jQM1q 3OUWfypkssG6yciICPnRHn4u4iSb8eOF+AQis0e8udpzfQidRqVA9+xFAKJSU2DKamTT +bupvsKmAHLiC/Nqnl2vHd55IL5/Uw+/kxpXsFhQSkf1RQrzMVylov6emcxoe5gzryrP u5kkLNuYoVBc7Z2fVtJ7UI00ExfxxrtAsQ382DTLmpB1rHMyvCXZKq4Q1ggM3M/hYWPv RWRGez9O4wxkli2Zgg6E6eloqFtCK5VlecbcLxA7CKS/Pvk9kSNG/dvf+Vv9tCpnP8du exHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-signature :dkim-signature:dkim-signature; bh=YqGuPFrtbrN2FWZZjxVD7mfXJAhGmfEeq9rtj6/wYaA=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=L/DpCEmlivgFbOZbZ2XzQkWpls+hSfPreDxNFG26CjiROgIeC6CeDNJKuYZG35/OD0 75A8GibyFbat/jSRpbwMaWi8gbSGKRsW7JYYFRrvs98PUY+4rgaTTpL7CeyMKdVqWVIi uvVN6ZFsYQW2/zHb51DqBRkLcwCmH7bFWI/VZV/ek10FPgHQzkRqqmceNiYdfjI/BvZj muqgigeBtMvNuB26RQBsYQpsewk8qNk+fV5BgxqTpaWK11xU4bs0EyJn8mBPwEAwQF6K yjeZhugX1gjnm/gyjpJoOgy3urOpfx6lScDaxRJ8oSHg3qeTF6+rgNXdCNC5a/aQBG56 1AKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=Yyw+GZ3f; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=Yyw+GZ3f; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; spf=pass (google.com: domain of linux-kernel+bounces-3987-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3987-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id a18-20020a67f2d2000000b004669b511fefsi293788vsn.425.2023.12.18.07.52.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 07:52:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3987-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=Yyw+GZ3f; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=Yyw+GZ3f; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; spf=pass (google.com: domain of linux-kernel+bounces-3987-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3987-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id A86F91C2468B for ; Mon, 18 Dec 2023 15:52:41 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9257A42373; Mon, 18 Dec 2023 15:51:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="Yyw+GZ3f"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="q2zNUTsA"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="Yyw+GZ3f"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="q2zNUTsA" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 333F315485 for ; Mon, 18 Dec 2023 15:51:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [10.150.64.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 5E4FB1F445; Mon, 18 Dec 2023 15:51:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702914696; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YqGuPFrtbrN2FWZZjxVD7mfXJAhGmfEeq9rtj6/wYaA=; b=Yyw+GZ3fwz+aWhW3vC8lhHRmquNamtckqmYvfeAOZ7crpeXoXUrQH6Pc9a3mxatbHEFS4F UFSmOHzfOPyaopfNaPEUkvHLoFmjaeNMZOVZepDFbO4gW9nQX1vZ4kygVhgnXCgXlB6DKS gCCdfuqu0XmXczhEuXMrspIiDdiEujI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702914696; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YqGuPFrtbrN2FWZZjxVD7mfXJAhGmfEeq9rtj6/wYaA=; b=q2zNUTsA7Mv4kL3rzEaASJ72ZwNG3Ex04giS+QEKaPRqDvWu5JXsrSDFWs8dijWY6I1G4t zlW2VGzLkQrmFbBA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702914696; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YqGuPFrtbrN2FWZZjxVD7mfXJAhGmfEeq9rtj6/wYaA=; b=Yyw+GZ3fwz+aWhW3vC8lhHRmquNamtckqmYvfeAOZ7crpeXoXUrQH6Pc9a3mxatbHEFS4F UFSmOHzfOPyaopfNaPEUkvHLoFmjaeNMZOVZepDFbO4gW9nQX1vZ4kygVhgnXCgXlB6DKS gCCdfuqu0XmXczhEuXMrspIiDdiEujI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702914696; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YqGuPFrtbrN2FWZZjxVD7mfXJAhGmfEeq9rtj6/wYaA=; b=q2zNUTsA7Mv4kL3rzEaASJ72ZwNG3Ex04giS+QEKaPRqDvWu5JXsrSDFWs8dijWY6I1G4t zlW2VGzLkQrmFbBA== Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 4F15913BC8; Mon, 18 Dec 2023 15:51:36 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id LPZdEohqgGWLAQAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:51:36 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 08/16] nvmet-fc: untangle cross refcounting objects Date: Mon, 18 Dec 2023 16:30:56 +0100 Message-ID: <20231218153105.12717-9-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: X-Spamd-Result: default: False [-2.10 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; REPLY(-4.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCPT_COUNT_SEVEN(0.00)[8]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: -2.10 X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785635549632382119 X-GMAIL-MSGID: 1785635549632382119 Associations take a refcount on queues, queues take a refcount on associations. The existing code lead to the situation that the target executes a disconnect and the host triggers a reconnect immediately. The reconnect command still finds an existing association and uses this. Though the reconnect crashes later on because nvmet_fc_delete_target_assoc() blindly goes ahead and removes resources while the reconnect code wants to use it. The problem is that nvmet_fc_find_target_assoc() is able to lookup an association which is being removed. So the first thing to address nvmet_fc_find_target_queue() is to remove the association out of the list and wait a RCU cycle and free resources in the free function callback of the kref_put(). The live time of the queues are strictly bound to the lifetime of an association. Thus we don't need to take reverse refcounts (queue -> association). Furthermore, streamline the cleanup code by using the workqueue for delete the association in nvmet_fc_ls_disconnect. This ensures, that we run through the same shutdown path in all non error cases. Reproducer: nvme/003 Signed-off-by: Daniel Wagner --- drivers/nvme/target/fc.c | 83 +++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 43 deletions(-) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index 28e432e62361..db992df13c73 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -166,6 +166,7 @@ struct nvmet_fc_tgt_assoc { struct nvmet_fc_hostport *hostport; struct nvmet_fc_ls_iod *rcv_disconn; struct list_head a_list; + struct nvmet_fc_tgt_queue *_queues[NVMET_NR_QUEUES + 1]; struct nvmet_fc_tgt_queue __rcu *queues[NVMET_NR_QUEUES + 1]; struct kref ref; struct work_struct del_work; @@ -803,14 +804,11 @@ nvmet_fc_alloc_target_queue(struct nvmet_fc_tgt_assoc *assoc, if (!queue) return NULL; - if (!nvmet_fc_tgt_a_get(assoc)) - goto out_free_queue; - queue->work_q = alloc_workqueue("ntfc%d.%d.%d", 0, 0, assoc->tgtport->fc_target_port.port_num, assoc->a_id, qid); if (!queue->work_q) - goto out_a_put; + goto out_free_queue; queue->qid = qid; queue->sqsize = sqsize; @@ -831,7 +829,8 @@ nvmet_fc_alloc_target_queue(struct nvmet_fc_tgt_assoc *assoc, if (ret) goto out_fail_iodlist; - WARN_ON(assoc->queues[qid]); + WARN_ON(assoc->_queues[qid]); + assoc->_queues[qid] = queue; rcu_assign_pointer(assoc->queues[qid], queue); return queue; @@ -839,8 +838,6 @@ nvmet_fc_alloc_target_queue(struct nvmet_fc_tgt_assoc *assoc, out_fail_iodlist: nvmet_fc_destroy_fcp_iodlist(assoc->tgtport, queue); destroy_workqueue(queue->work_q); -out_a_put: - nvmet_fc_tgt_a_put(assoc); out_free_queue: kfree(queue); return NULL; @@ -853,12 +850,8 @@ nvmet_fc_tgt_queue_free(struct kref *ref) struct nvmet_fc_tgt_queue *queue = container_of(ref, struct nvmet_fc_tgt_queue, ref); - rcu_assign_pointer(queue->assoc->queues[queue->qid], NULL); - nvmet_fc_destroy_fcp_iodlist(queue->assoc->tgtport, queue); - nvmet_fc_tgt_a_put(queue->assoc); - destroy_workqueue(queue->work_q); kfree_rcu(queue, rcu); @@ -1173,13 +1166,18 @@ nvmet_fc_target_assoc_free(struct kref *ref) struct nvmet_fc_tgtport *tgtport = assoc->tgtport; struct nvmet_fc_ls_iod *oldls; unsigned long flags; + int i; + + for (i = NVMET_NR_QUEUES; i >= 0; i--) { + if (assoc->_queues[i]) + nvmet_fc_delete_target_queue(assoc->_queues[i]); + } /* Send Disconnect now that all i/o has completed */ nvmet_fc_xmt_disconnect_assoc(assoc); nvmet_fc_free_hostport(assoc->hostport); spin_lock_irqsave(&tgtport->lock, flags); - list_del_rcu(&assoc->a_list); oldls = assoc->rcv_disconn; spin_unlock_irqrestore(&tgtport->lock, flags); /* if pending Rcv Disconnect Association LS, send rsp now */ @@ -1209,7 +1207,7 @@ static void nvmet_fc_delete_target_assoc(struct nvmet_fc_tgt_assoc *assoc) { struct nvmet_fc_tgtport *tgtport = assoc->tgtport; - struct nvmet_fc_tgt_queue *queue; + unsigned long flags; int i, terminating; terminating = atomic_xchg(&assoc->terminating, 1); @@ -1218,29 +1216,25 @@ nvmet_fc_delete_target_assoc(struct nvmet_fc_tgt_assoc *assoc) if (terminating) return; + /* prevent new I/Os entering the queues */ + for (i = NVMET_NR_QUEUES; i >= 0; i--) + rcu_assign_pointer(assoc->queues[i], NULL); - for (i = NVMET_NR_QUEUES; i >= 0; i--) { - rcu_read_lock(); - queue = rcu_dereference(assoc->queues[i]); - if (!queue) { - rcu_read_unlock(); - continue; - } + spin_lock_irqsave(&tgtport->lock, flags); + list_del_rcu(&assoc->a_list); + spin_unlock_irqrestore(&tgtport->lock, flags); - if (!nvmet_fc_tgt_q_get(queue)) { - rcu_read_unlock(); - continue; - } - rcu_read_unlock(); - nvmet_fc_delete_target_queue(queue); - nvmet_fc_tgt_q_put(queue); + synchronize_rcu(); + + /* ensure all in-flight I/Os have been processed */ + for (i = NVMET_NR_QUEUES; i >= 0; i--) { + if (assoc->_queues[i]) + flush_workqueue(assoc->_queues[i]->work_q); } dev_info(tgtport->dev, "{%d:%d} Association deleted\n", tgtport->fc_target_port.port_num, assoc->a_id); - - nvmet_fc_tgt_a_put(assoc); } static struct nvmet_fc_tgt_assoc * @@ -1493,9 +1487,8 @@ __nvmet_fc_free_assocs(struct nvmet_fc_tgtport *tgtport) list_for_each_entry_rcu(assoc, &tgtport->assoc_list, a_list) { if (!nvmet_fc_tgt_a_get(assoc)) continue; - if (!queue_work(nvmet_wq, &assoc->del_work)) - /* already deleting - release local reference */ - nvmet_fc_tgt_a_put(assoc); + queue_work(nvmet_wq, &assoc->del_work); + nvmet_fc_tgt_a_put(assoc); } rcu_read_unlock(); } @@ -1548,9 +1541,8 @@ nvmet_fc_invalidate_host(struct nvmet_fc_target_port *target_port, continue; assoc->hostport->invalid = 1; noassoc = false; - if (!queue_work(nvmet_wq, &assoc->del_work)) - /* already deleting - release local reference */ - nvmet_fc_tgt_a_put(assoc); + queue_work(nvmet_wq, &assoc->del_work); + nvmet_fc_tgt_a_put(assoc); } spin_unlock_irqrestore(&tgtport->lock, flags); @@ -1594,9 +1586,8 @@ nvmet_fc_delete_ctrl(struct nvmet_ctrl *ctrl) nvmet_fc_tgtport_put(tgtport); if (found_ctrl) { - if (!queue_work(nvmet_wq, &assoc->del_work)) - /* already deleting - release local reference */ - nvmet_fc_tgt_a_put(assoc); + queue_work(nvmet_wq, &assoc->del_work); + nvmet_fc_tgt_a_put(assoc); return; } @@ -1626,6 +1617,8 @@ nvmet_fc_unregister_targetport(struct nvmet_fc_target_port *target_port) /* terminate any outstanding associations */ __nvmet_fc_free_assocs(tgtport); + flush_workqueue(nvmet_wq); + /* * should terminate LS's as well. However, LS's will be generated * at the tail end of association termination, so they likely don't @@ -1871,9 +1864,6 @@ nvmet_fc_ls_disconnect(struct nvmet_fc_tgtport *tgtport, sizeof(struct fcnvme_ls_disconnect_assoc_acc)), FCNVME_LS_DISCONNECT_ASSOC); - /* release get taken in nvmet_fc_find_target_assoc */ - nvmet_fc_tgt_a_put(assoc); - /* * The rules for LS response says the response cannot * go back until ABTS's have been sent for all outstanding @@ -1888,8 +1878,6 @@ nvmet_fc_ls_disconnect(struct nvmet_fc_tgtport *tgtport, assoc->rcv_disconn = iod; spin_unlock_irqrestore(&tgtport->lock, flags); - nvmet_fc_delete_target_assoc(assoc); - if (oldls) { dev_info(tgtport->dev, "{%d:%d} Multiple Disconnect Association LS's " @@ -1905,6 +1893,9 @@ nvmet_fc_ls_disconnect(struct nvmet_fc_tgtport *tgtport, nvmet_fc_xmt_ls_rsp(tgtport, oldls); } + queue_work(nvmet_wq, &assoc->del_work); + nvmet_fc_tgt_a_put(assoc); + return false; } @@ -2903,6 +2894,9 @@ nvmet_fc_remove_port(struct nvmet_port *port) nvmet_fc_portentry_unbind(pe); + /* terminate any outstanding associations */ + __nvmet_fc_free_assocs(pe->tgtport); + kfree(pe); } @@ -2934,6 +2928,9 @@ static int __init nvmet_fc_init_module(void) static void __exit nvmet_fc_exit_module(void) { + /* ensure any shutdown operation, e.g. delete ctrls have finished */ + flush_workqueue(nvmet_wq); + /* sanity check - all lports should be removed */ if (!list_empty(&nvmet_fc_target_list)) pr_warn("%s: targetport list not empty\n", __func__); From patchwork Mon Dec 18 15:30:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180525 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1342348dyi; Mon, 18 Dec 2023 08:02:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IF4GLnONrZvalpsh8Xt4UGW3Ehlx6PJyNEdJOBphmdZbAUBjG8hhzEwbIoUksv3R5EEO0rC X-Received: by 2002:a05:6a20:6a03:b0:18b:1f82:7d74 with SMTP id p3-20020a056a206a0300b0018b1f827d74mr23009146pzk.2.1702915322180; Mon, 18 Dec 2023 08:02:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702915322; cv=none; d=google.com; s=arc-20160816; b=LQBI0kzUnk+A9wjC511rR5iiUjkSqUuBqycCxyBTjIkbDvSdGy5tQTrOHq3ukMFs7Y Xfb8RK/9yVT09h8H83ApqpK3LaMDpSedyilZ7Gfj/XUZTF7BmSiZunRTnJCW1iFB82Up TVI7HeENDYdH6I/28afmN7I+PqHEg++Ym+6SCekWB0I4q9b2G0le8t0p8ljPjfuF5wzj FbOsKh6P6C0mNXMJNNBM8Re/djQgV81uvNDBnCKZjnkjHt1KCSRKuo7vl+e26OZaS2P4 BHVaM3yWoTTW3w2emBqNTdiSBUIDbDmQq6JvhqDh0YkC+mrW+MkYq7i9iBC3j0SROQad Xlew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=AQ1RlV6Acfe2YPkTy/Cr+JCfIF5qXbTv3BiW+9J+M4o=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=fTdVm0W4lsXrjq9G3esIcrkHh7EQMQBZwkAeHr+SH/wHqtQPyGWNihydgqEuNVUSqo 49agts+6gNHnQ1kjaYtuo3TIJAqLLUV2D5wf8P1oKzENSxaJdl0Y38bQUDnA1D4R/y+N l5ej/RUNjhbVxwafY8LjeYaKueFkdXibFm/pgA19xPHX5M4S3PuG9FL9iWFwS9eGZ9up gyekP+bV1z5NxSH4YFmvGmn07/V10Z3a79iWlkBUBArsVCy9SbLhPvobuQtv+Qmljmec y5NKx2lR5oWkQMrBcvNd+OzCIK4XHU//rtA4xgCyfT3dzoTfL0NpkO2tR0lnmGjFFAT8 ZKhg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3989-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3989-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id z5-20020a636505000000b005c1b2fdfe6dsi3601125pgb.573.2023.12.18.08.02.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 08:02:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3989-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3989-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3989-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 6E76DB243EE for ; Mon, 18 Dec 2023 15:54:18 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 21F504239B; Mon, 18 Dec 2023 15:53:57 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E1393A1D4 for ; Mon, 18 Dec 2023 15:53:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 575EE1F445; Mon, 18 Dec 2023 15:53:51 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 4271D13BC8; Mon, 18 Dec 2023 15:53:51 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id 6iebDg9rgGXCAQAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:53:51 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 09/16] nvmet-fc: free queue and assoc directly Date: Mon, 18 Dec 2023 16:30:57 +0100 Message-ID: <20231218153105.12717-10-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: Authentication-Results: smtp-out2.suse.de; none X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] X-Spam-Score: -4.00 X-Rspamd-Queue-Id: 575EE1F445 X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785636136898766451 X-GMAIL-MSGID: 1785636136898766451 Neither struct nvmet_fc_tgt_queue nor struct nvmet_fc_tgt_assoc are data structure which are used in a RCU context. So there is no reason to delay the free operation. Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/nvme/target/fc.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index db992df13c73..0adf65154e27 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -145,7 +145,6 @@ struct nvmet_fc_tgt_queue { struct list_head avail_defer_list; struct workqueue_struct *work_q; struct kref ref; - struct rcu_head rcu; /* array of fcp_iods */ struct nvmet_fc_fcp_iod fod[] __counted_by(sqsize); } __aligned(sizeof(unsigned long long)); @@ -170,7 +169,6 @@ struct nvmet_fc_tgt_assoc { struct nvmet_fc_tgt_queue __rcu *queues[NVMET_NR_QUEUES + 1]; struct kref ref; struct work_struct del_work; - struct rcu_head rcu; }; @@ -854,7 +852,7 @@ nvmet_fc_tgt_queue_free(struct kref *ref) destroy_workqueue(queue->work_q); - kfree_rcu(queue, rcu); + kfree(queue); } static void @@ -1187,8 +1185,8 @@ nvmet_fc_target_assoc_free(struct kref *ref) dev_info(tgtport->dev, "{%d:%d} Association freed\n", tgtport->fc_target_port.port_num, assoc->a_id); - kfree_rcu(assoc, rcu); nvmet_fc_tgtport_put(tgtport); + kfree(assoc); } static void From patchwork Mon Dec 18 15:30:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180527 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1343752dyi; Mon, 18 Dec 2023 08:03:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IFbmE5ImWNQzb1q4YbscoKfh+Rzi3CLzkLswjLE37H/SEFQZXbhUX8XG6BV9qWNOQT81YHu X-Received: by 2002:a05:6a00:3012:b0:6d8:2e9a:5d3c with SMTP id ay18-20020a056a00301200b006d82e9a5d3cmr1521371pfb.38.1702915406640; Mon, 18 Dec 2023 08:03:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702915406; cv=none; d=google.com; s=arc-20160816; b=XmTnrGkwrjgCZYm5GREdgNCxXdxS/haEj4v57IUZ7hVnOIA/PFA/1x+Qbn1HzF9a/L fslE+lWNqO0yHaV+Q2q4+VmgJxJB01rK4nqA/7/GtEJO0q5o8IZkpwNoqhvQqpLOGPdk P3mG/gqNLDkrmkPh9egXp+Uzb0q0KMZ5A4vZDm4f2dN4941al9f/Lm8vKtVtlHoTgL+q tyCNuX0LRgo3p59mvjsRxkmzpJdD9Tfbxknyy0/pY1UJ+DFWIqmlU9cG9C3tjo9ixzD/ U2E9A4MDSRr0zXJSzisL4fXgRwplqf2myKb+h55d5/4pBctdQ7o+G7axfnzmPq6vhn+5 cFgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-signature :dkim-signature:dkim-signature; bh=MJ9W11dpS2QdHFN8Mkp+AZQ70TUdu4la3PZucmekhPg=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=tCs5FTfnZhAsCunodSwqFgJfYAF1oq4ZFWCs/WUeCs1FEV4rY1LmGg5TRVGb8d9JEM IUbAA4jexkxHtiu+YNahvvbDi5UQSJ5MfywJLzzhR4szB3nucUcNmrYFuRw3EREMLg0m z0FuO0hgHTha+Hz48Y2rgZ1bgKPSz3zLGTml+0/1X/loRFHaixR+PWeDnHJK71H7Ryzd PrlOAQiQsAzlV+mJ/rUTpN2Qups+Gk94GMXemXz+Xw3FI4Afr7lN/D1oVptaN2fpXAG6 5L+tv+XOPz+bYMZYKColXXtT6rbae9C9YDMgN3V6iCwFQUq1tAwmyu95CfeG+AlxpLb2 FNng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=IvMCQetk; dkim=neutral (no key) header.i=@suse.de; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=IvMCQetk; dkim=neutral (no key) header.i=@suse.de; spf=pass (google.com: domain of linux-kernel+bounces-3991-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3991-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id c9-20020a63d509000000b005bd03d4f2d7si17529602pgg.511.2023.12.18.08.03.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 08:03:26 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3991-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=IvMCQetk; dkim=neutral (no key) header.i=@suse.de; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=IvMCQetk; dkim=neutral (no key) header.i=@suse.de; spf=pass (google.com: domain of linux-kernel+bounces-3991-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3991-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 70D2DB23750 for ; Mon, 18 Dec 2023 15:56:25 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D3D2F3D57B; Mon, 18 Dec 2023 15:56:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="IvMCQetk"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="lDuwQufK"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="IvMCQetk"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="lDuwQufK" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E338C1EA71 for ; Mon, 18 Dec 2023 15:56:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [10.150.64.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 1B3C71FD49; Mon, 18 Dec 2023 15:56:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702914966; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MJ9W11dpS2QdHFN8Mkp+AZQ70TUdu4la3PZucmekhPg=; b=IvMCQetkPEO5Dzkze/zc4aOeAn6Dhn/CB0+bTm2N7DAq0YHW5eYbmw4QohuYp7d8m4WlwT ZTcCFzRLkrFi4PVjKxN9o1V7fjA+plcDZu+S/sc4od2mI1ij8UeF1ONeuEe9amZb5ApZmE O1FlSxZN6H4yJUKs0iBbbrsYTKVGcJA= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702914966; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MJ9W11dpS2QdHFN8Mkp+AZQ70TUdu4la3PZucmekhPg=; b=lDuwQufKhNUx5cp6whAEwIvUvrqo9olKG3fcGEx/kmLETuO5egagr+66pCmauXwr4LuNtb KoNxH7JrdVVqExDw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702914966; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MJ9W11dpS2QdHFN8Mkp+AZQ70TUdu4la3PZucmekhPg=; b=IvMCQetkPEO5Dzkze/zc4aOeAn6Dhn/CB0+bTm2N7DAq0YHW5eYbmw4QohuYp7d8m4WlwT ZTcCFzRLkrFi4PVjKxN9o1V7fjA+plcDZu+S/sc4od2mI1ij8UeF1ONeuEe9amZb5ApZmE O1FlSxZN6H4yJUKs0iBbbrsYTKVGcJA= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702914966; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MJ9W11dpS2QdHFN8Mkp+AZQ70TUdu4la3PZucmekhPg=; b=lDuwQufKhNUx5cp6whAEwIvUvrqo9olKG3fcGEx/kmLETuO5egagr+66pCmauXwr4LuNtb KoNxH7JrdVVqExDw== Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 09D4F13BC8; Mon, 18 Dec 2023 15:56:06 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id PlYvAZZrgGVXAgAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:56:06 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 10/16] nvmet-fc: hold reference on hostport match Date: Mon, 18 Dec 2023 16:30:58 +0100 Message-ID: <20231218153105.12717-11-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: X-Spamd-Result: default: False [0.90 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; REPLY(-4.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCPT_COUNT_SEVEN(0.00)[8]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.00)[26.58%] Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: 0.90 X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785636225494117723 X-GMAIL-MSGID: 1785636225494117723 The hostport data structure is shared between the association, this why we keep track of the users via a refcount. So we should not decrement the refcount on a match and free the hostport several times. Reported by KASAN. Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/nvme/target/fc.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index 0adf65154e27..fa7a6d2edd88 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -1070,8 +1070,6 @@ nvmet_fc_alloc_hostport(struct nvmet_fc_tgtport *tgtport, void *hosthandle) /* new allocation not needed */ kfree(newhost); newhost = match; - /* no new allocation - release reference */ - nvmet_fc_tgtport_put(tgtport); } else { newhost->tgtport = tgtport; newhost->hosthandle = hosthandle; From patchwork Mon Dec 18 15:30:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180523 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1341420dyi; Mon, 18 Dec 2023 08:01:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IHQQnsfeMKlCwXVJ5nV6V79hcxGtL58E/qTuPVNKrs6wLJGemk0CA27gS4d1omh41FduokZ X-Received: by 2002:a50:8add:0:b0:553:5357:96ee with SMTP id k29-20020a508add000000b00553535796eemr894279edk.45.1702915268807; Mon, 18 Dec 2023 08:01:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702915268; cv=none; d=google.com; s=arc-20160816; b=zEfO7niLEYiciIJcAFXFG6ww129pKcOWQ3WWefR5pFv1WTeXQ+2QmuGVy2X/jtqQNj 5ZkBAflP3gcdCLdF2ub1RnheeN39MwKVa3KOLYpxS5xWAO1IGlbyoFAJzJk4dpLhVfKb rHG0lPMh4wmBHDD806N2pYIglOV87RRx0FfVjQVRZ2Je9GIK8wNmP5+Fu+m92faHQwD9 h5cjZ7aXW54TAgw9rMy8A8Ip/nkA0Cp1FcOWJs82iSOm6vg5Jxd8gwkBr7WeyrwejDIq tJQUHGlabWUe8Xf2XPS4BrUBbRQVHt4htn/2cGdJft39YRCLw3k5KktnZh7AfClXE1IB 154A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=QJDvPsNpDSFcwlZxk9YgfJH4JSGSTnY9Rh1/tTKUSxI=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=lMxFd1owXsG9FKgaVBQh3NifJ/QNiGT4MtcI684GYQERKCbXePwmy+yHHaVxXgg1zR aFiG1psCk4qpUL1IUiQHD348PiFhrVfLypY4jbAWjS8VVxhqWdoV7aBqGMfLoKs1v+K1 t1HpFGcrU/jLjCptTPnIREGT2qR5PJpIKype1d7KK7WbyCqfYeVP3kEBnup8ztueZ9Gs w6sVlH+XBnowSce3LHQvlGf3gTiA51iBVNfaFckrEqOc0dciGiH4SdFYAKmKkWH6+3xz ui38gq3k488TfIHLhTMWe6ZOgQfqSEe8w/yLZDQj70X0AHHAQkZM7T17aFOLu+qkmPsm +lEA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3999-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3999-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id u4-20020a50a404000000b0054c54fb37ddsi9759550edb.188.2023.12.18.08.01.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 08:01:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3999-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3999-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3999-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 7218B1F25A22 for ; Mon, 18 Dec 2023 15:59:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AC3AF498B9; Mon, 18 Dec 2023 15:58:25 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 97FE549897 for ; Mon, 18 Dec 2023 15:58:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id DFFD321FA4; Mon, 18 Dec 2023 15:58:20 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id CD8EE13BD5; Mon, 18 Dec 2023 15:58:20 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id KWP4MBxsgGX5AgAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 15:58:20 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 11/16] nvmet-fc: remove null hostport pointer check Date: Mon, 18 Dec 2023 16:30:59 +0100 Message-ID: <20231218153105.12717-12-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Rspamd-Server: rspamd1.dmz-prg2.suse.org X-Spam-Level: X-Spam-Flag: NO X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] Authentication-Results: smtp-out1.suse.de; none X-Spam-Score: -4.00 X-Rspamd-Queue-Id: DFFD321FA4 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785636080895318738 X-GMAIL-MSGID: 1785636080895318738 An association has always a valid hostport pointer. Remove useless null pointer check. Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/nvme/target/fc.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index fa7a6d2edd88..c243085d6f42 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -489,8 +489,7 @@ nvmet_fc_xmt_disconnect_assoc(struct nvmet_fc_tgt_assoc *assoc) * message is normal. Otherwise, send unless the hostport has * already been invalidated by the lldd. */ - if (!tgtport->ops->ls_req || !assoc->hostport || - assoc->hostport->invalid) + if (!tgtport->ops->ls_req || assoc->hostport->invalid) return; lsop = kzalloc((sizeof(*lsop) + @@ -1530,8 +1529,7 @@ nvmet_fc_invalidate_host(struct nvmet_fc_target_port *target_port, spin_lock_irqsave(&tgtport->lock, flags); list_for_each_entry_safe(assoc, next, &tgtport->assoc_list, a_list) { - if (!assoc->hostport || - assoc->hostport->hosthandle != hosthandle) + if (assoc->hostport->hosthandle != hosthandle) continue; if (!nvmet_fc_tgt_a_get(assoc)) continue; From patchwork Mon Dec 18 15:31:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180528 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1343948dyi; Mon, 18 Dec 2023 08:03:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IEPI1bVAV8TDSz69NfKLm8ymJ17YHv959b55ZBH6E+o7XS+qLT2Jeo26jK4TZ6FmZXtbMC+ X-Received: by 2002:a17:906:f9c4:b0:a23:69e9:4387 with SMTP id lj4-20020a170906f9c400b00a2369e94387mr293484ejb.140.1702915418776; Mon, 18 Dec 2023 08:03:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702915418; cv=none; d=google.com; s=arc-20160816; b=Fq2WkE+xNU7IYgMg5Qoj7ipouEbtL6RMxkuwMupwPTjI0Ugt4DOy/YuaKJ9+jBdia9 LXOuHCmNDDTlbcFLpWJJnitUJBC+dCn4+HkyrkiCuo1BiiNqOK9WXW6ixSGPoYlf7kYW hFk17+2gLL/2b75euG0LRfqcmG9DfaVrzpWvKVV5OC7UDraEvTl3SdgQahWHOli/eWry EC98MgM1753livzbxU+bCs+VgkbeiVH+b9A6D08nHFrHjOpVbyaStydLLbBiUgWsareG AIx7zYcSiduHESTBAp1dJcKTSmxgBwmwb5Sf4flCM9NjZV2d13z+7mXb+TyyFLt8nEt2 jK6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=HR1hPaZ08JIcimayKpCp+hCqsw6yOAyawjKcFadv8pA=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=S5cj9/icClWftN/3AvBQWLL9cUMZ8/lFfcf9J3446v/nMCm1nlT0+uOU/gO13SVfeL cPzyYH5Gz6bI8444HC5Fv9WuG05IokdhQ+v3+Kf+93glbDS2BjSaRvuLzzXItCqmoT5G 2H2gsGZPbl7NuHN9aXTMMUtshYb5qvxcd3ycMbf4SJdOChIThK+k015F4rsVhAiHT143 b8PRw6Hd9+Q7UuGg0t2I75F5jtV/f7mOCPr4Jv2Lw3B4Y877WBzYxQriikww0YIRMAH8 H4E4vq0PIn5AaTey1sGaR/KS9deeWtWr/ITvytcQ0gmuQByY+D8tqPs6y2w7x3X5fSxs BvxA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-4009-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4009-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id o16-20020a17090637d000b00a2349c0236dsi1338959ejc.305.2023.12.18.08.03.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 08:03:38 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-4009-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-4009-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4009-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 0896B1F2416F for ; Mon, 18 Dec 2023 16:01:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 647E04FF98; Mon, 18 Dec 2023 16:00:40 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7F2863D57B for ; Mon, 18 Dec 2023 16:00:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id C824421FC5; Mon, 18 Dec 2023 16:00:35 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id B426E13BC8; Mon, 18 Dec 2023 16:00:35 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id Gld1KqNsgGWzAwAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 16:00:35 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 12/16] nvmet-fc: do not tack refs on tgtports from assoc Date: Mon, 18 Dec 2023 16:31:00 +0100 Message-ID: <20231218153105.12717-13-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: Authentication-Results: smtp-out1.suse.de; none X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] X-Spam-Score: -4.00 X-Rspamd-Queue-Id: C824421FC5 X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785636238282409458 X-GMAIL-MSGID: 1785636238282409458 The association life time is tight to the life time of the target port. That means we do not take extra a refcount when creating a association. Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/nvme/target/fc.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index c243085d6f42..47cecc8c72b2 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -1109,12 +1109,9 @@ nvmet_fc_alloc_target_assoc(struct nvmet_fc_tgtport *tgtport, void *hosthandle) if (idx < 0) goto out_free_assoc; - if (!nvmet_fc_tgtport_get(tgtport)) - goto out_ida; - assoc->hostport = nvmet_fc_alloc_hostport(tgtport, hosthandle); if (IS_ERR(assoc->hostport)) - goto out_put; + goto out_ida; assoc->tgtport = tgtport; assoc->a_id = idx; @@ -1144,8 +1141,6 @@ nvmet_fc_alloc_target_assoc(struct nvmet_fc_tgtport *tgtport, void *hosthandle) return assoc; -out_put: - nvmet_fc_tgtport_put(tgtport); out_ida: ida_free(&tgtport->assoc_cnt, idx); out_free_assoc: @@ -1182,7 +1177,6 @@ nvmet_fc_target_assoc_free(struct kref *ref) dev_info(tgtport->dev, "{%d:%d} Association freed\n", tgtport->fc_target_port.port_num, assoc->a_id); - nvmet_fc_tgtport_put(tgtport); kfree(assoc); } From patchwork Mon Dec 18 15:31:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180539 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1347494dyi; Mon, 18 Dec 2023 08:07:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IF3JdA/QFQa4a9gG+LxqAyL6vkqFnjneLrhd8Z4SVL1uXxk3kwcE2DA27y/YRmWHEAn4TwO X-Received: by 2002:a81:8743:0:b0:5d7:1940:53cc with SMTP id x64-20020a818743000000b005d7194053ccmr13850991ywf.68.1702915661125; Mon, 18 Dec 2023 08:07:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702915661; cv=none; d=google.com; s=arc-20160816; b=SLxOzUxHPvp2VIckqRwhoCkAogBG7unfjPXnQZU3OeQZYajJk8xpB6Q6pednYujyGC cBDohNIzgjEt1CzmzXydfEFJRtD0iDG/iCuizkGF+6bLe6ErZkJN14XoYYY5dVnQDcb0 xC6Z4z6pegDYZikPQn4c1OwFPKnSLPDOOhbnocvfvNBf4u2e3LEyiSKmBK/06hA7pq3w K70rvM1cRH7YL4yH0v3MzgE6whY7g0/8mnyXmmMpQ8HC5x0j7B2X/K92cQx+pq3+u33P a7sry1toZFRMP8+MaxUIqHuxX5SmCHw4HUDN7CCvu3koRFV2VblD+BtFRN7gOT9hJibH 6zMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=mOtf+QZDvmrKDTXJ4FRCySwcKfTtKvHv8paQJexeOGI=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=niF2E53X60YtYTy1B/a4NiRY74s74pTb8T9GxAIm+FzJCyAOLw69M4o1jbLPYrEz0z 9L/UoZhgANGZqTZmlkvZcDKJ4twPTs/pql3dZ4afUxsBwIAZ7iu/ljixFHyoOTzsfsbQ OXX/Ina6Cy0aHs4H57PBk5yeNXEWGDGZu7Kwgogjzwrkr7BV0KzbBQZIayroNLFxE2LX SDft3pMrbL5Ma46N6pMM5AJHXufnLbKT06t6QPTmqHwFReD2Z8jjnhQfOIUdKbqcmqHt XJwTDR53DuwSshSk032hDzwf59uiDVXmahjPct8jsUG1+c0guDAmfxEf7bl5HvM0AilD vq8g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-4026-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4026-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id u64-20020a0deb43000000b005e3e633e6e4si2436516ywe.542.2023.12.18.08.07.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 08:07:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-4026-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-4026-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4026-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id DE9CE1C258E4 for ; Mon, 18 Dec 2023 16:07:40 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 484237609B; Mon, 18 Dec 2023 16:02:55 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 425DF49897 for ; Mon, 18 Dec 2023 16:02:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 8145E1FD4D; Mon, 18 Dec 2023 16:02:50 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 7349013BC8; Mon, 18 Dec 2023 16:02:50 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id WUMpGyptgGUABAAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 16:02:50 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 13/16] nvmet-fc: abort command if when there is binding Date: Mon, 18 Dec 2023 16:31:01 +0100 Message-ID: <20231218153105.12717-14-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Rspamd-Server: rspamd1.dmz-prg2.suse.org X-Spam-Level: X-Spam-Flag: NO X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: -4.00 X-Rspamd-Queue-Id: 8145E1FD4D X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785636492453177644 X-GMAIL-MSGID: 1785636492453177644 WHen the target port has not active port binding, there is no point in trying to process the command as it has to fail anyway. Instead adding checks to all commands abort the command early. Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/nvme/target/fc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index 47cecc8c72b2..663c51c9fe53 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -1101,6 +1101,9 @@ nvmet_fc_alloc_target_assoc(struct nvmet_fc_tgtport *tgtport, void *hosthandle) int idx; bool needrandom = true; + if (!tgtport->pe) + return NULL; + assoc = kzalloc(sizeof(*assoc), GFP_KERNEL); if (!assoc) return NULL; @@ -2520,8 +2523,9 @@ nvmet_fc_handle_fcp_rqst(struct nvmet_fc_tgtport *tgtport, fod->req.cmd = &fod->cmdiubuf.sqe; fod->req.cqe = &fod->rspiubuf.cqe; - if (tgtport->pe) - fod->req.port = tgtport->pe->port; + if (!tgtport->pe) + goto transport_error; + fod->req.port = tgtport->pe->port; /* clear any response payload */ memset(&fod->rspiubuf, 0, sizeof(fod->rspiubuf)); From patchwork Mon Dec 18 15:31:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180540 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1348194dyi; Mon, 18 Dec 2023 08:08:36 -0800 (PST) X-Google-Smtp-Source: AGHT+IFlSJZGCo4A82pgYLyMdSBThta0nhIDZDRqouykzqsBOa1/Y9tKTDs9ltZK3xXwLray1X1Q X-Received: by 2002:a17:902:9a82:b0:1d0:6ffd:f21b with SMTP id w2-20020a1709029a8200b001d06ffdf21bmr7309321plp.113.1702915716091; Mon, 18 Dec 2023 08:08:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702915716; cv=none; d=google.com; s=arc-20160816; b=Aqi3u/guLvtynh5XL8NMpxeq1rdvHi5aHGb2Yf1H4Jid50XEhOMPoSat2eRZWDbasI MQ39s+NrtPrFs0RNCDtnei6QD5mmFKezyEIbkzXB/VZGSGDEgieqvHd2RaaJmJt3fgIu X+JZRnYOiBOmlx8YOE+YWFFpwQiW5Hi1+iiuHQ/aC22GetYHT38BHeeD3YtDRotWNmiV LavNljIqEE5Qn3oCChgb1a8E++moz9pVHQHwlaOdPWPKTCbBY92vdqQxxdZI+ehGsNDh VwhYlWY2XH6BV4V/KSM33rW8WGl/iDGc8b4Pc+q4vP43GkLyJXwhkuKZd+kgJyRPSA1t ARWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=n11OfF1QXEDTY8UUINBbHh622YQ31BcFGsGZL13OMCo=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=pWmtStvBhRbI/htFiNarXn8sAyKzFqsCDed+oW68NlkAVMSyx108H9af1rdpRqtHPL u8GqS789E2AG/l21SrOMpVxwjBWeJUxOMoc8szU/ymdd8s/fE8WoEdXkfXEvmW2b2v72 F0fgjV8ge+eZIBPNx5+GG9HGBFO3Yh8MKspyV0W+5UOEB2uAAF9qcrxI0BG9Zs71tudO pbenleWIDDeyJtwPwPMXwIFdDQ++8OdRY0/OyScXqHPrURRlQ5kkd+A8sUKbk97DQzJt +HN0OW/O80Dhps2nGJzrN0FReDt5FEJSOcUNJvSXZJ0p/zKumOsTwznyiH5Sailweeji M0FQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-4029-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4029-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id bj17-20020a056a02019100b005c65ed0f688si18312778pgb.296.2023.12.18.08.08.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 08:08:36 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-4029-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-4029-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4029-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id DCE39285188 for ; Mon, 18 Dec 2023 16:08:35 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A817D5A856; Mon, 18 Dec 2023 16:05:10 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2F95F4FF98 for ; Mon, 18 Dec 2023 16:05:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 6C8831F445; Mon, 18 Dec 2023 16:05:05 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 5AE7C13BD5; Mon, 18 Dec 2023 16:05:05 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id LMq+FLFtgGUtBAAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 16:05:05 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 14/16] nvmet-fc: free hostport after release reference to tgtport Date: Mon, 18 Dec 2023 16:31:02 +0100 Message-ID: <20231218153105.12717-15-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: Authentication-Results: smtp-out2.suse.de; none X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] X-Spam-Score: -4.00 X-Rspamd-Queue-Id: 6C8831F445 X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785636549555930026 X-GMAIL-MSGID: 1785636549555930026 Give the ref back before destroying the hostport object to prevent a potential UAF. Signed-off-by: Daniel Wagner --- drivers/nvme/target/fc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index 663c51c9fe53..23d8779dc221 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -986,8 +986,8 @@ nvmet_fc_hostport_free(struct kref *ref) spin_unlock_irqrestore(&tgtport->lock, flags); if (tgtport->ops->host_release && hostport->invalid) tgtport->ops->host_release(hostport->hosthandle); - kfree(hostport); nvmet_fc_tgtport_put(tgtport); + kfree(hostport); } static void From patchwork Mon Dec 18 15:31:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180549 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1354036dyi; Mon, 18 Dec 2023 08:15:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IGPm1CqKiakf85kFhYLDNO9Il4o5DKq1MoHJIZbg3MJ8QMMtkhpglwiC5KyVFntzEnFDLn1 X-Received: by 2002:a50:ee97:0:b0:553:45b6:5c10 with SMTP id f23-20020a50ee97000000b0055345b65c10mr1592357edr.45.1702916118958; Mon, 18 Dec 2023 08:15:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702916118; cv=none; d=google.com; s=arc-20160816; b=UITzFDmN269MwY1FjYybgo4CBFMgY8fKbBlIwtF7QQIFM6h85PRMJ0CpX+ECRPpDbA DJuI2B7OLEMHTC5bRwqsCu3Oz2k36AKpcfq6PKcUNGH1SZTI5Eh0gC3z0lUiSUbfnSSP zqyuRlRczge4p6uT1f9GU21YI0F4QanpLcHDBcGOG2XoVMjiG/jACm8sFycsqoMpmcST Py1vYdGRMWClsD2Cfzyba2Z1yoxPvHT0WYJ/qHr+5/T/srKgQt7kuAq+5RewUd3qQntU ryizKh8ZoordTT3vF2hGgEClIA8zn8eD53l2ho9Feu8ixHQF0uA58UgAvk4pFsmgo7Fh 17Lw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-signature :dkim-signature:dkim-signature; bh=yK/Hr2YVEMCcXE4FG2IGAGx0ZBAT/0fwQl0qaqUb0zc=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=vKFGRL3gM+F5J8qAvtgbpY2VMS5MTnNSaGSNCs/HYm7w7woqbdq6GEcait9BO8u5o7 adYA+HtD2/KkGQlUWQN89BkhOfsQuMW6RZ8E1Zq6Z3ZRnyNgQxZEtaikhtAOlG7oDWUT 5uqvouyHUH+kEIoI56OXU87VXUPkEG0xIDOwThOzy974ZnL8gMJ2qg3f32mlBYifXVEr HJZxA5VAyZia5psInx0UfI7nyJg6tlCnONDz+g/Wgeff/0/vV59dJ5q60UgogKYxazyy 3p3W4hFbu3bUcgs6PY9wJHsPY5nVqFUfxEyJsDVSMSWT6vszc4u9YeN3CLZ2EADZuCl9 39nw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=G1v6op6O; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=cS5EfduT; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=G1v6op6O; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=cS5EfduT; spf=pass (google.com: domain of linux-kernel+bounces-4031-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4031-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id m22-20020a509316000000b0054c838a8cdasi10126117eda.535.2023.12.18.08.15.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 08:15:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-4031-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=G1v6op6O; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=cS5EfduT; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=G1v6op6O; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=cS5EfduT; spf=pass (google.com: domain of linux-kernel+bounces-4031-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4031-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 065C61F2560E for ; Mon, 18 Dec 2023 16:09:08 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AE76C5BF88; Mon, 18 Dec 2023 16:07:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="G1v6op6O"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="cS5EfduT"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="G1v6op6O"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="cS5EfduT" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4A6025A84C for ; Mon, 18 Dec 2023 16:07:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [10.150.64.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 6538121FDD; Mon, 18 Dec 2023 16:07:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702915640; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yK/Hr2YVEMCcXE4FG2IGAGx0ZBAT/0fwQl0qaqUb0zc=; b=G1v6op6ObibyZR/C0rZ28xAdfORhVbzUByAxvkvgs3dQ/32JZ6nXo6j4WkrGfU+XrOyLO5 PuifE0PrxHlh5UPnMko3qpBhplWb+6z5wVJ93Wlnem2ttO2LTjX9Sn/URtMoWENQDbAtdC ZN5xib6UQxzl4+L/ZMjLGpfU7ovJTu0= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702915640; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yK/Hr2YVEMCcXE4FG2IGAGx0ZBAT/0fwQl0qaqUb0zc=; b=cS5EfduT2suNMErc3P2c4ho5D3m2AxJAY1ovUmq63jD5Nl/xloZj3qMBT8OJFtwpFPPqb1 2a8arXTTU0wmlUAQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702915640; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yK/Hr2YVEMCcXE4FG2IGAGx0ZBAT/0fwQl0qaqUb0zc=; b=G1v6op6ObibyZR/C0rZ28xAdfORhVbzUByAxvkvgs3dQ/32JZ6nXo6j4WkrGfU+XrOyLO5 PuifE0PrxHlh5UPnMko3qpBhplWb+6z5wVJ93Wlnem2ttO2LTjX9Sn/URtMoWENQDbAtdC ZN5xib6UQxzl4+L/ZMjLGpfU7ovJTu0= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702915640; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yK/Hr2YVEMCcXE4FG2IGAGx0ZBAT/0fwQl0qaqUb0zc=; b=cS5EfduT2suNMErc3P2c4ho5D3m2AxJAY1ovUmq63jD5Nl/xloZj3qMBT8OJFtwpFPPqb1 2a8arXTTU0wmlUAQ== Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 4EAA713BD5; Mon, 18 Dec 2023 16:07:20 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id vYlJEThugGVcBAAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 16:07:20 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 15/16] nvmet-fc: avoid deadlock on delete association path Date: Mon, 18 Dec 2023 16:31:03 +0100 Message-ID: <20231218153105.12717-16-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Authentication-Results: smtp-out1.suse.de; none X-Spam-Level: ** X-Spam-Score: 2.21 X-Spamd-Result: default: False [2.21 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; NEURAL_SPAM_SHORT(2.37)[0.789]; REPLY(-4.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCPT_COUNT_SEVEN(0.00)[8]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.06)[60.96%] X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785636972011887352 X-GMAIL-MSGID: 1785636972011887352 When deleting an association the shutdown path is deadlocking because we try to flush the nvmet_wq nested. Avoid this by deadlock by deferring the put work into its own work item. Signed-off-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/nvme/target/fc.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index 23d8779dc221..30ba4ede333f 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -111,6 +111,8 @@ struct nvmet_fc_tgtport { struct nvmet_fc_port_entry *pe; struct kref ref; u32 max_sg_cnt; + + struct work_struct put_work; }; struct nvmet_fc_port_entry { @@ -243,6 +245,13 @@ static LIST_HEAD(nvmet_fc_portentry_list); static void nvmet_fc_handle_ls_rqst_work(struct work_struct *work); static void nvmet_fc_fcp_rqst_op_defer_work(struct work_struct *work); +static void nvmet_fc_put_tgtport_work(struct work_struct *work) +{ + struct nvmet_fc_tgtport *tgtport = + container_of(work, struct nvmet_fc_tgtport, put_work); + + nvmet_fc_tgtport_put(tgtport); +} static void nvmet_fc_tgt_a_put(struct nvmet_fc_tgt_assoc *assoc); static int nvmet_fc_tgt_a_get(struct nvmet_fc_tgt_assoc *assoc); static void nvmet_fc_tgt_q_put(struct nvmet_fc_tgt_queue *queue); @@ -359,7 +368,7 @@ __nvmet_fc_finish_ls_req(struct nvmet_fc_ls_req_op *lsop) if (!lsop->req_queued) { spin_unlock_irqrestore(&tgtport->lock, flags); - nvmet_fc_tgtport_put(tgtport); + queue_work(nvmet_wq, &tgtport->put_work); return; } @@ -373,7 +382,7 @@ __nvmet_fc_finish_ls_req(struct nvmet_fc_ls_req_op *lsop) (lsreq->rqstlen + lsreq->rsplen), DMA_BIDIRECTIONAL); - nvmet_fc_tgtport_put(tgtport); + queue_work(nvmet_wq, &tgtport->put_work); } static int @@ -1402,6 +1411,7 @@ nvmet_fc_register_targetport(struct nvmet_fc_port_info *pinfo, kref_init(&newrec->ref); ida_init(&newrec->assoc_cnt); newrec->max_sg_cnt = template->max_sgl_segments; + INIT_WORK(&newrec->put_work, nvmet_fc_put_tgtport_work); ret = nvmet_fc_alloc_ls_iodlist(newrec); if (ret) { From patchwork Mon Dec 18 15:31:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180543 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1349921dyi; Mon, 18 Dec 2023 08:10:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IGPpRTy5FqWlQdK8n6GDNLQYJT0lHLwLlBavarsOzEhWejeMmb1BYy/BYhyQjm4P3wO25nh X-Received: by 2002:a81:8354:0:b0:5e7:730f:277a with SMTP id t81-20020a818354000000b005e7730f277amr66184ywf.41.1702915844751; Mon, 18 Dec 2023 08:10:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702915844; cv=none; d=google.com; s=arc-20160816; b=WXn19YouwLyKDgDBZHJfH4no5//I+zapUXwRjOBCedjq69I039ZIsLoi+L5bT3WjsW YhkqnKlSeVlrzzv8dAIU/AMoHqOi/uPXykSu7+wVJ+0ATmr+ubr+DG44/kzrlt8HTPv7 CNVSXaXS64DvUrmdpXjlmxm6o9Hj1m/VIAcjnr+ClfDRPqWTTQsKoLGSjBMJjR9PZAIy A6cKC5M7/lIQXt21Mh64HqtjMZ0afvX7zDhuL5SFfyiBQiGb6lwSHfujT7TGpVBws0ho n6e3K0vqZFkMLtHeAWYXeb2ZzhrQgPFoePSqGEH+UALl+o3xpyhr+5Q+CZaIpRFJHR8g eJDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-signature :dkim-signature:dkim-signature; bh=pT1da3yYKXyrC7sy+ZTSZeuGrK+DTVOGLpaUNBqQiAI=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=Th8P9OI0GAtURgxcRinBUJnphOHJfxz0xlxhXUtpv0DHhV2E2GYfCXFZscVnFp3iCc 4fb2NKY3BZuD/jbrZ93FdJ7sn5mezAYBN9IrSjXndf2zMXmxN5qIYqLrZVfeNdKiWe/T tGuz3iFxMwtZBFCcOpfX1SuvlUj94ew/B46ALos2uD066DQjFemn28JUAPuK83aycmb1 EuZFZodJDoOo/hiLJFHOeSFmCA0m/mN+szUSUegkT6yKLe9qDvb/guRVZyUQPwcF7xYH m6ryyYeGOCnF+/DC4KJLT/cgqb9oJfhDrjMBCkVy8O0xHfTaLeZAkzWFWIwNdbuCtGEU YLaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=ImVs09QW; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=ImVs09QW; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; spf=pass (google.com: domain of linux-kernel+bounces-4036-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4036-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id b189-20020a0dd9c6000000b005e5547799f9si2191885ywe.328.2023.12.18.08.10.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 08:10:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-4036-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=ImVs09QW; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=ImVs09QW; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519; spf=pass (google.com: domain of linux-kernel+bounces-4036-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4036-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 76AB91C256E1 for ; Mon, 18 Dec 2023 16:10:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 72B685A84A; Mon, 18 Dec 2023 16:09:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="ImVs09QW"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="ZcUJmiE4"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="ImVs09QW"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="ZcUJmiE4" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 622E44FF7D for ; Mon, 18 Dec 2023 16:09:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [10.150.64.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 497601FD48; Mon, 18 Dec 2023 16:09:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702915775; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pT1da3yYKXyrC7sy+ZTSZeuGrK+DTVOGLpaUNBqQiAI=; b=ImVs09QWr+H5axHHqzsCSVZgrRo1wpONoUbGbLKn22emcN2DmK6RgxkqBojHlJwzKGiooR uM2ZqggbdV4evnTi6LwJrH3HwirHKzkeormRDNZPdTPHMTAJSimM4Bbytfuo4o8e59jClH LIm0WUOcUnO87dpAJ4nsxuK2mp44tuE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702915775; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pT1da3yYKXyrC7sy+ZTSZeuGrK+DTVOGLpaUNBqQiAI=; b=ZcUJmiE4ulqboLe1YEFNrEmJ+MiR1Mnwj0xVeJUZmpjtsg1mlvgnpWCyv2fIK4oAIvajku SD1vUzh2o6JWlzAg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702915775; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pT1da3yYKXyrC7sy+ZTSZeuGrK+DTVOGLpaUNBqQiAI=; b=ImVs09QWr+H5axHHqzsCSVZgrRo1wpONoUbGbLKn22emcN2DmK6RgxkqBojHlJwzKGiooR uM2ZqggbdV4evnTi6LwJrH3HwirHKzkeormRDNZPdTPHMTAJSimM4Bbytfuo4o8e59jClH LIm0WUOcUnO87dpAJ4nsxuK2mp44tuE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702915775; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pT1da3yYKXyrC7sy+ZTSZeuGrK+DTVOGLpaUNBqQiAI=; b=ZcUJmiE4ulqboLe1YEFNrEmJ+MiR1Mnwj0xVeJUZmpjtsg1mlvgnpWCyv2fIK4oAIvajku SD1vUzh2o6JWlzAg== Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 2F60613BD5; Mon, 18 Dec 2023 16:09:35 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id NeRiCb9ugGVzBAAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 16:09:35 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 16/16] nvmet-fc: take ref count on tgtport before delete assoc Date: Mon, 18 Dec 2023 16:31:04 +0100 Message-ID: <20231218153105.12717-17-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: X-Spamd-Result: default: False [0.90 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; REPLY(-4.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCPT_COUNT_SEVEN(0.00)[8]; MID_CONTAINS_FROM(1.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.00)[32.84%] Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: 0.90 X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785636684715685941 X-GMAIL-MSGID: 1785636684715685941 We have to ensure that the tgtport is not going away before be have remove all the associations. Signed-off-by: Daniel Wagner --- drivers/nvme/target/fc.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index 30ba4ede333f..455d35ef97eb 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -1092,13 +1092,28 @@ nvmet_fc_alloc_hostport(struct nvmet_fc_tgtport *tgtport, void *hosthandle) } static void -nvmet_fc_delete_assoc(struct work_struct *work) +nvmet_fc_delete_assoc(struct nvmet_fc_tgt_assoc *assoc) +{ + nvmet_fc_delete_target_assoc(assoc); + nvmet_fc_tgt_a_put(assoc); +} + +static void +nvmet_fc_delete_assoc_work(struct work_struct *work) { struct nvmet_fc_tgt_assoc *assoc = container_of(work, struct nvmet_fc_tgt_assoc, del_work); + struct nvmet_fc_tgtport *tgtport = assoc->tgtport; - nvmet_fc_delete_target_assoc(assoc); - nvmet_fc_tgt_a_put(assoc); + nvmet_fc_delete_assoc(assoc); + nvmet_fc_tgtport_put(tgtport); +} + +static void +nvmet_fc_schedule_delete_assoc(struct nvmet_fc_tgt_assoc *assoc) +{ + nvmet_fc_tgtport_get(assoc->tgtport); + queue_work(nvmet_wq, &assoc->del_work); } static struct nvmet_fc_tgt_assoc * @@ -1129,7 +1144,7 @@ nvmet_fc_alloc_target_assoc(struct nvmet_fc_tgtport *tgtport, void *hosthandle) assoc->a_id = idx; INIT_LIST_HEAD(&assoc->a_list); kref_init(&assoc->ref); - INIT_WORK(&assoc->del_work, nvmet_fc_delete_assoc); + INIT_WORK(&assoc->del_work, nvmet_fc_delete_assoc_work); atomic_set(&assoc->terminating, 0); while (needrandom) { @@ -1489,7 +1504,7 @@ __nvmet_fc_free_assocs(struct nvmet_fc_tgtport *tgtport) list_for_each_entry_rcu(assoc, &tgtport->assoc_list, a_list) { if (!nvmet_fc_tgt_a_get(assoc)) continue; - queue_work(nvmet_wq, &assoc->del_work); + nvmet_fc_schedule_delete_assoc(assoc); nvmet_fc_tgt_a_put(assoc); } rcu_read_unlock(); @@ -1542,7 +1557,7 @@ nvmet_fc_invalidate_host(struct nvmet_fc_target_port *target_port, continue; assoc->hostport->invalid = 1; noassoc = false; - queue_work(nvmet_wq, &assoc->del_work); + nvmet_fc_schedule_delete_assoc(assoc); nvmet_fc_tgt_a_put(assoc); } spin_unlock_irqrestore(&tgtport->lock, flags); @@ -1587,7 +1602,7 @@ nvmet_fc_delete_ctrl(struct nvmet_ctrl *ctrl) nvmet_fc_tgtport_put(tgtport); if (found_ctrl) { - queue_work(nvmet_wq, &assoc->del_work); + nvmet_fc_schedule_delete_assoc(assoc); nvmet_fc_tgt_a_put(assoc); return; } @@ -1894,7 +1909,7 @@ nvmet_fc_ls_disconnect(struct nvmet_fc_tgtport *tgtport, nvmet_fc_xmt_ls_rsp(tgtport, oldls); } - queue_work(nvmet_wq, &assoc->del_work); + nvmet_fc_schedule_delete_assoc(assoc); nvmet_fc_tgt_a_put(assoc); return false; From patchwork Mon Dec 18 15:31:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Wagner X-Patchwork-Id: 180550 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1358566dyi; Mon, 18 Dec 2023 08:22:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IGL8Y7+i3rxdgAWQISnh3mnRUSgLXKKAgENKaBAt4Be5+l7UZgoXkpz2/73Sb4HGf3tFZ3b X-Received: by 2002:a05:6358:441e:b0:172:d191:aee5 with SMTP id z30-20020a056358441e00b00172d191aee5mr2993198rwc.33.1702916531472; Mon, 18 Dec 2023 08:22:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702916531; cv=none; d=google.com; s=arc-20160816; b=OZ0NNx4vnS9aXzCOvAeEsZlFnFHYwHyZTApBYvndNgfm1Q6yRsXSJCME01h7V67NFG 1fzdznjGpLyisON9T8T3u874B1NxSxX01QWCIWL7aN3wXWjvzkAcmaS+HgeDnCqPj3Qh RfLZg8tnFh5He/x2cLEOLV9KDcP9SqZoNWusO7yJyysKeE/6NonsWwu87Xh/recnOjxj Wjs8kek85X4ulSbneokrBrxZzGFVebuSs4PvF3RTQK9cXk9+m0jVKdYgM4jRAvmmWNu8 A4Xl52kFsje1GpYFMoVQd28ZLRfCc9YatPifdPIqeQ6VIU8jPGJDa71Eyk3nmjrXY67L SrQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=skadj5+qjfes0vUAguTAW/V9mryQM+tNImnPBnD87lQ=; fh=3QIVKsEmsld8rvcEkMSr/XDw53o2lrGJeYcvS7FhzFk=; b=0AzT14C/OWK9bxw5hhb6Iy7Uw1tyqhAMgt58EAFfOS/gxMPeszfR9boogmXjgjTb+j c4WlX8nyy0Rk+gql8jFgECIp+kCVRcavqwf9+yGKGFRnvMEuQ4sM9ecvGN3NFEZ+4fMZ LBaFStgtqtXHkCrDk9CkXXw+44kXHi49qcamrL8BaNaOS/HD9XKGs46k9/UkolgNo0OL 0au3FU9NrImJ7Dh1JixdZC4mZSEQikeTvZTe05kmqFWPHHIa19UnhkH8QU2x+44qBeEP 43WjInhnA3V/2I7QAz1ZvPBd3mXzL8SEuI6jnAYYbTU2ZaVknaqIjFSsgK9GrAMcHzr6 s29w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-4042-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4042-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id w14-20020a63c10e000000b005cd9600a04fsi2349985pgf.215.2023.12.18.08.22.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 08:22:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-4042-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-4042-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-4042-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 20285B22C85 for ; Mon, 18 Dec 2023 16:12:20 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B5DF649897; Mon, 18 Dec 2023 16:11:59 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DE95B3D56F for ; Mon, 18 Dec 2023 16:11:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 0AA5C21FDE; Mon, 18 Dec 2023 16:11:50 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id E839C13BD5; Mon, 18 Dec 2023 16:11:49 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id 7/GGNkVvgGUVBQAAn2gu4w (envelope-from ); Mon, 18 Dec 2023 16:11:49 +0000 From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Christoph Hellwig , Sagi Grimberg , Keith Busch , James Smart , Hannes Reinecke , Daniel Wagner Subject: [PATCH v3 17/17] nvmet-fc: add extensive debug logging Date: Mon, 18 Dec 2023 16:31:05 +0100 Message-ID: <20231218153105.12717-18-dwagner@suse.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231218153105.12717-1-dwagner@suse.de> References: <20231218153105.12717-1-dwagner@suse.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spam-Level: Authentication-Results: smtp-out1.suse.de; none X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spamd-Result: default: False [-4.00 / 50.00]; REPLY(-4.00)[] X-Spam-Score: -4.00 X-Rspamd-Queue-Id: 0AA5C21FDE X-Spam-Flag: NO X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785637404951919738 X-GMAIL-MSGID: 1785637404951919738 Signed-off-by: Daniel Wagner --- drivers/nvme/target/configfs.c | 4 + drivers/nvme/target/core.c | 13 ++++ drivers/nvme/target/fc.c | 132 +++++++++++++++++++++++++++++---- 3 files changed, 135 insertions(+), 14 deletions(-) diff --git a/drivers/nvme/target/configfs.c b/drivers/nvme/target/configfs.c index e307a044b1a1..ea05e8c62d4b 100644 --- a/drivers/nvme/target/configfs.c +++ b/drivers/nvme/target/configfs.c @@ -965,6 +965,7 @@ static int nvmet_port_subsys_allow_link(struct config_item *parent, goto out_free_link; } + pr_info("%s: %s\n", __func__, subsys->subsysnqn); if (list_empty(&port->subsystems)) { ret = nvmet_enable_port(port); if (ret) @@ -1050,6 +1051,7 @@ static int nvmet_allowed_hosts_allow_link(struct config_item *parent, if (!strcmp(nvmet_host_name(p->host), nvmet_host_name(host))) goto out_free_link; } + pr_info("%s: adding hostnqn %s\n", __func__, nvmet_host_name(host)); list_add_tail(&link->entry, &subsys->hosts); nvmet_subsys_disc_changed(subsys, host); @@ -1879,6 +1881,8 @@ static struct config_group *nvmet_ports_make(struct config_group *group, u16 portid; u32 i; + pr_info("%s\n", __func__); + if (kstrtou16(name, 0, &portid)) return ERR_PTR(-EINVAL); diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c index 3935165048e7..4d5a9e4fcc9d 100644 --- a/drivers/nvme/target/core.c +++ b/drivers/nvme/target/core.c @@ -308,8 +308,11 @@ void nvmet_port_del_ctrls(struct nvmet_port *port, struct nvmet_subsys *subsys) { struct nvmet_ctrl *ctrl; + pr_info("%s: subsys %s port %p\n", __func__, subsys->subsysnqn, port); + mutex_lock(&subsys->lock); list_for_each_entry(ctrl, &subsys->ctrls, subsys_entry) { + pr_info("%s: ctrl %p ctrl->port %p\n", __func__, ctrl, ctrl->port); if (ctrl->port == port) ctrl->ops->delete_ctrl(ctrl); } @@ -1458,6 +1461,8 @@ u16 nvmet_alloc_ctrl(const char *subsysnqn, const char *hostnqn, mutex_unlock(&subsys->lock); *ctrlp = ctrl; + + pr_info("%s: ctrl %p, subsysnqn %s hostnqn %s\n", __func__, ctrl, subsysnqn, hostnqn); return 0; out_free_sqs: @@ -1477,6 +1482,8 @@ static void nvmet_ctrl_free(struct kref *ref) struct nvmet_ctrl *ctrl = container_of(ref, struct nvmet_ctrl, ref); struct nvmet_subsys *subsys = ctrl->subsys; + pr_info("%s: ctrl %p %s\n", __func__, ctrl, ctrl->subsysnqn); + mutex_lock(&subsys->lock); nvmet_release_p2p_ns_map(ctrl); list_del(&ctrl->subsys_entry); @@ -1550,6 +1557,8 @@ struct nvmet_subsys *nvmet_subsys_alloc(const char *subsysnqn, char serial[NVMET_SN_MAX_SIZE / 2]; int ret; + pr_info("%s\n", __func__); + subsys = kzalloc(sizeof(*subsys), GFP_KERNEL); if (!subsys) return ERR_PTR(-ENOMEM); @@ -1620,6 +1629,8 @@ static void nvmet_subsys_free(struct kref *ref) WARN_ON_ONCE(!xa_empty(&subsys->namespaces)); + pr_info("%s\n", __func__); + xa_destroy(&subsys->namespaces); nvmet_passthru_subsys_free(subsys); @@ -1633,6 +1644,8 @@ void nvmet_subsys_del_ctrls(struct nvmet_subsys *subsys) { struct nvmet_ctrl *ctrl; + pr_info("%s\n", __func__); + mutex_lock(&subsys->lock); list_for_each_entry(ctrl, &subsys->ctrls, subsys_entry) ctrl->ops->delete_ctrl(ctrl); diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c index 455d35ef97eb..d50ff29697fc 100644 --- a/drivers/nvme/target/fc.c +++ b/drivers/nvme/target/fc.c @@ -242,6 +242,31 @@ static LIST_HEAD(nvmet_fc_target_list); static DEFINE_IDA(nvmet_fc_tgtport_cnt); static LIST_HEAD(nvmet_fc_portentry_list); +static void __nvmet_fc_tgtport_put(struct nvmet_fc_tgtport *tgtport); +static int __nvmet_fc_tgtport_get(struct nvmet_fc_tgtport *tgtport); + +#if 1 +#define nvmet_fc_tgtport_put(p) \ +({ \ + pr_info("nvmet_fc_tgtport_put: %p %d %s:%d\n", \ + p, atomic_read(&p->ref.refcount.refs), \ + __func__, __LINE__); \ + __nvmet_fc_tgtport_put(p); \ +}) + +#define nvmet_fc_tgtport_get(p) \ +({ \ + int ___r = __nvmet_fc_tgtport_get(p); \ + \ + pr_info("nvmet_fc_tgtport_get: %p %d %s:%d\n", \ + p, atomic_read(&p->ref.refcount.refs), \ + __func__, __LINE__); \ + ___r; \ +}) +#else +#define nvmet_fc_tgtport_put(p) __nvmet_fc_tgtport_put(p) +#define nvmet_fc_tgtport_get(p) __nvmet_fc_tgtport_get(p) +#endif static void nvmet_fc_handle_ls_rqst_work(struct work_struct *work); static void nvmet_fc_fcp_rqst_op_defer_work(struct work_struct *work); @@ -252,12 +277,84 @@ static void nvmet_fc_put_tgtport_work(struct work_struct *work) nvmet_fc_tgtport_put(tgtport); } -static void nvmet_fc_tgt_a_put(struct nvmet_fc_tgt_assoc *assoc); -static int nvmet_fc_tgt_a_get(struct nvmet_fc_tgt_assoc *assoc); -static void nvmet_fc_tgt_q_put(struct nvmet_fc_tgt_queue *queue); -static int nvmet_fc_tgt_q_get(struct nvmet_fc_tgt_queue *queue); -static void nvmet_fc_tgtport_put(struct nvmet_fc_tgtport *tgtport); -static int nvmet_fc_tgtport_get(struct nvmet_fc_tgtport *tgtport); +static void __nvmet_fc_tgt_a_put(struct nvmet_fc_tgt_assoc *assoc); +static int __nvmet_fc_tgt_a_get(struct nvmet_fc_tgt_assoc *assoc); + +#if 1 +#define nvmet_fc_tgt_a_put(a) \ +({ \ + pr_info("nvmet_fc_tgt_a_put: %d %d %s:%d \n", \ + a->a_id, atomic_read(&a->ref.refcount.refs), \ + __func__, __LINE__); \ + __nvmet_fc_tgt_a_put(a); \ +}) + +#define nvmet_fc_tgt_a_get(a) \ +({ \ + int ___r = __nvmet_fc_tgt_a_get(a); \ + \ + pr_info("nvmet_fc_tgt_a_get: %d %d %s:%d\n", \ + a->a_id, atomic_read(&a->ref.refcount.refs), \ + __func__, __LINE__); \ + ___r; \ +}) +#else +#define nvmet_fc_tgt_a_put(a) __nvmet_fc_tgt_a_put(a) +#define nvmet_fc_tgt_a_get(a) __nvmet_fc_tgt_a_get(a) +#endif + +static void __nvmet_fc_hostport_put(struct nvmet_fc_hostport *hostport); +static int __nvmet_fc_hostport_get(struct nvmet_fc_hostport *hostport); + +#if 0 +#define nvmet_fc_hostport_put(p) \ +({ \ + pr_info("nvmet_fc_hostport_put: %p %d %s:%d\n", \ + p, atomic_read(&p->ref.refcount.refs), \ + __func__, __LINE__); \ + __nvmet_fc_hostport_put(p); \ +}) + +#define nvmet_fc_hostport_get(p) \ +({ \ + int ___r = __nvmet_fc_hostport_get(p); \ + \ + pr_info("nvmet_fc_hostport_get: %p %d %s:%d\n", \ + p, atomic_read(&p->ref.refcount.refs), \ + __func__, __LINE__); \ + ___r; \ +}) +#else +#define nvmet_fc_hostport_put(p) __nvmet_fc_hostport_put(p) +#define nvmet_fc_hostport_get(p) __nvmet_fc_hostport_get(p) +#endif + +static void __nvmet_fc_tgt_q_put(struct nvmet_fc_tgt_queue *queue); +static int __nvmet_fc_tgt_q_get(struct nvmet_fc_tgt_queue *queue); + +#if 0 +#define nvmet_fc_tgt_q_put(q) \ +({ \ + pr_info("nvmet_fc_tgt_q_put: %p %d %s:%d\n", \ + q, atomic_read(&q->ref.refcount.refs), \ + __func__, __LINE__); \ + __nvmet_fc_tgt_q_put(q); \ +}) + +#define nvmet_fc_tgt_q_get(q) \ +({ \ + int ___r = __nvmet_fc_tgt_q_get(q); \ + \ + pr_info("nvmet_fc_tgt_q_get: %p %d %s:%d\n", \ + q, atomic_read(&q->ref.refcount.refs), \ + __func__, __LINE__); \ + ___r; \ +}) +#else +#define nvmet_fc_tgt_q_put(q) __nvmet_fc_tgt_q_put(q) +#define nvmet_fc_tgt_q_get(q) __nvmet_fc_tgt_q_get(q) +#endif + static void nvmet_fc_handle_fcp_rqst(struct nvmet_fc_tgtport *tgtport, struct nvmet_fc_fcp_iod *fod); static void nvmet_fc_delete_target_assoc(struct nvmet_fc_tgt_assoc *assoc); @@ -864,13 +961,13 @@ nvmet_fc_tgt_queue_free(struct kref *ref) } static void -nvmet_fc_tgt_q_put(struct nvmet_fc_tgt_queue *queue) +__nvmet_fc_tgt_q_put(struct nvmet_fc_tgt_queue *queue) { kref_put(&queue->ref, nvmet_fc_tgt_queue_free); } static int -nvmet_fc_tgt_q_get(struct nvmet_fc_tgt_queue *queue) +__nvmet_fc_tgt_q_get(struct nvmet_fc_tgt_queue *queue) { return kref_get_unless_zero(&queue->ref); } @@ -1000,13 +1097,13 @@ nvmet_fc_hostport_free(struct kref *ref) } static void -nvmet_fc_hostport_put(struct nvmet_fc_hostport *hostport) +__nvmet_fc_hostport_put(struct nvmet_fc_hostport *hostport) { kref_put(&hostport->ref, nvmet_fc_hostport_free); } static int -nvmet_fc_hostport_get(struct nvmet_fc_hostport *hostport) +__nvmet_fc_hostport_get(struct nvmet_fc_hostport *hostport) { return kref_get_unless_zero(&hostport->ref); } @@ -1208,13 +1305,13 @@ nvmet_fc_target_assoc_free(struct kref *ref) } static void -nvmet_fc_tgt_a_put(struct nvmet_fc_tgt_assoc *assoc) +__nvmet_fc_tgt_a_put(struct nvmet_fc_tgt_assoc *assoc) { kref_put(&assoc->ref, nvmet_fc_target_assoc_free); } static int -nvmet_fc_tgt_a_get(struct nvmet_fc_tgt_assoc *assoc) +__nvmet_fc_tgt_a_get(struct nvmet_fc_tgt_assoc *assoc) { return kref_get_unless_zero(&assoc->ref); } @@ -1441,6 +1538,7 @@ nvmet_fc_register_targetport(struct nvmet_fc_port_info *pinfo, spin_unlock_irqrestore(&nvmet_fc_tgtlock, flags); *portptr = &newrec->fc_target_port; + pr_info("%s: targetport %p\n", __func__, newrec); return 0; out_free_newrec: @@ -1484,13 +1582,13 @@ nvmet_fc_free_tgtport(struct kref *ref) } static void -nvmet_fc_tgtport_put(struct nvmet_fc_tgtport *tgtport) +__nvmet_fc_tgtport_put(struct nvmet_fc_tgtport *tgtport) { kref_put(&tgtport->ref, nvmet_fc_free_tgtport); } static int -nvmet_fc_tgtport_get(struct nvmet_fc_tgtport *tgtport) +__nvmet_fc_tgtport_get(struct nvmet_fc_tgtport *tgtport) { return kref_get_unless_zero(&tgtport->ref); } @@ -1580,6 +1678,8 @@ nvmet_fc_delete_ctrl(struct nvmet_ctrl *ctrl) unsigned long flags; bool found_ctrl = false; + pr_info("%s: ctrl %p\n", __func__, ctrl); + /* this is a bit ugly, but don't want to make locks layered */ spin_lock_irqsave(&nvmet_fc_tgtlock, flags); list_for_each_entry_safe(tgtport, next, &nvmet_fc_target_list, @@ -1591,6 +1691,8 @@ nvmet_fc_delete_ctrl(struct nvmet_ctrl *ctrl) rcu_read_lock(); list_for_each_entry_rcu(assoc, &tgtport->assoc_list, a_list) { queue = rcu_dereference(assoc->queues[0]); + pr_info("%s: queue %p nvme_sq.ctrl %p\n", + __func__, queue, queue ? queue->nvme_sq.ctrl : NULL); if (queue && queue->nvme_sq.ctrl == ctrl) { if (nvmet_fc_tgt_a_get(assoc)) found_ctrl = true; @@ -1628,6 +1730,8 @@ nvmet_fc_unregister_targetport(struct nvmet_fc_target_port *target_port) { struct nvmet_fc_tgtport *tgtport = targetport_to_tgtport(target_port); + pr_info("%s\n", __func__); + nvmet_fc_portentry_unbind_tgt(tgtport); /* terminate any outstanding associations */