* [PATCH] nvmet-fcloop: call done callback even when remote port is gone
@ 2025-09-01 15:51 Daniel Wagner
2025-09-02 8:56 ` Hannes Reinecke
2025-09-02 13:23 ` Yi Zhang
0 siblings, 2 replies; 3+ messages in thread
From: Daniel Wagner @ 2025-09-01 15:51 UTC (permalink / raw)
To: James Smart, Christoph Hellwig, Sagi Grimberg
Cc: linux-nvme, linux-kernel, Yi Zhang, Daniel Wagner
When the target port is gone, it's not possible to access any of the
request resources. The function should just silently drop the response.
The comment is misleading in this regard.
Though it's still necessary to call the driver via the ->done callback
so the driver is able to release all resources.
Reported-by: Yi Zhang <yi.zhang@redhat.com>
Closes: https://lore.kernel.org/all/CAHj4cs-OBA0WMt5f7R0dz+rR4HcEz19YLhnyGsj-MRV3jWDsPg@mail.gmail.com/
Fixes: 84eedced1c5b ("nvmet-fcloop: drop response if targetport is gone")
Signed-off-by: Daniel Wagner <wagi@kernel.org>
---
drivers/nvme/target/fcloop.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/nvme/target/fcloop.c b/drivers/nvme/target/fcloop.c
index 257b497d515a892a39da82d2f96b3fa3c6e10cdd..5dffcc5becae86c79ef75a123647566b2dfc21f6 100644
--- a/drivers/nvme/target/fcloop.c
+++ b/drivers/nvme/target/fcloop.c
@@ -496,13 +496,15 @@ fcloop_t2h_xmt_ls_rsp(struct nvme_fc_local_port *localport,
if (!targetport) {
/*
* The target port is gone. The target doesn't expect any
- * response anymore and the ->done call is not valid
- * because the resources have been freed by
- * nvmet_fc_free_pending_reqs.
+ * response anymore and thus lsreq can't be accessed anymore.
*
* We end up here from delete association exchange:
* nvmet_fc_xmt_disconnect_assoc sends an async request.
+ *
+ * Return success because this is what LLDDs do; silently
+ * drop the response.
*/
+ lsrsp->done(lsrsp);
kmem_cache_free(lsreq_cache, tls_req);
return 0;
}
---
base-commit: b320789d6883cc00ac78ce83bccbfe7ed58afcf0
change-id: 20250901-nvme-fc-fix-leaks-4a25ca3875ab
Best regards,
--
Daniel Wagner <wagi@kernel.org>
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] nvmet-fcloop: call done callback even when remote port is gone
2025-09-01 15:51 [PATCH] nvmet-fcloop: call done callback even when remote port is gone Daniel Wagner
@ 2025-09-02 8:56 ` Hannes Reinecke
2025-09-02 13:23 ` Yi Zhang
1 sibling, 0 replies; 3+ messages in thread
From: Hannes Reinecke @ 2025-09-02 8:56 UTC (permalink / raw)
To: Daniel Wagner, James Smart, Christoph Hellwig, Sagi Grimberg
Cc: linux-nvme, linux-kernel, Yi Zhang
On 9/1/25 17:51, Daniel Wagner wrote:
> When the target port is gone, it's not possible to access any of the
> request resources. The function should just silently drop the response.
> The comment is misleading in this regard.
>
> Though it's still necessary to call the driver via the ->done callback
> so the driver is able to release all resources.
>
> Reported-by: Yi Zhang <yi.zhang@redhat.com>
> Closes: https://lore.kernel.org/all/CAHj4cs-OBA0WMt5f7R0dz+rR4HcEz19YLhnyGsj-MRV3jWDsPg@mail.gmail.com/
> Fixes: 84eedced1c5b ("nvmet-fcloop: drop response if targetport is gone")
> Signed-off-by: Daniel Wagner <wagi@kernel.org>
> ---
> drivers/nvme/target/fcloop.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare@suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] nvmet-fcloop: call done callback even when remote port is gone
2025-09-01 15:51 [PATCH] nvmet-fcloop: call done callback even when remote port is gone Daniel Wagner
2025-09-02 8:56 ` Hannes Reinecke
@ 2025-09-02 13:23 ` Yi Zhang
1 sibling, 0 replies; 3+ messages in thread
From: Yi Zhang @ 2025-09-02 13:23 UTC (permalink / raw)
To: Daniel Wagner
Cc: James Smart, Christoph Hellwig, Sagi Grimberg, linux-nvme,
linux-kernel
On Mon, Sep 1, 2025 at 11:58 PM Daniel Wagner <wagi@kernel.org> wrote:
>
> When the target port is gone, it's not possible to access any of the
> request resources. The function should just silently drop the response.
> The comment is misleading in this regard.
>
> Though it's still necessary to call the driver via the ->done callback
> so the driver is able to release all resources.
>
> Reported-by: Yi Zhang <yi.zhang@redhat.com>
> Closes: https://lore.kernel.org/all/CAHj4cs-OBA0WMt5f7R0dz+rR4HcEz19YLhnyGsj-MRV3jWDsPg@mail.gmail.com/
> Fixes: 84eedced1c5b ("nvmet-fcloop: drop response if targetport is gone")
> Signed-off-by: Daniel Wagner <wagi@kernel.org>
> ---
> drivers/nvme/target/fcloop.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
Verified the kmemleak issue fixed with this patch:
Tested-by: Yi Zhang <yi.zhang@redhat.com>
> diff --git a/drivers/nvme/target/fcloop.c b/drivers/nvme/target/fcloop.c
> index 257b497d515a892a39da82d2f96b3fa3c6e10cdd..5dffcc5becae86c79ef75a123647566b2dfc21f6 100644
> --- a/drivers/nvme/target/fcloop.c
> +++ b/drivers/nvme/target/fcloop.c
> @@ -496,13 +496,15 @@ fcloop_t2h_xmt_ls_rsp(struct nvme_fc_local_port *localport,
> if (!targetport) {
> /*
> * The target port is gone. The target doesn't expect any
> - * response anymore and the ->done call is not valid
> - * because the resources have been freed by
> - * nvmet_fc_free_pending_reqs.
> + * response anymore and thus lsreq can't be accessed anymore.
> *
> * We end up here from delete association exchange:
> * nvmet_fc_xmt_disconnect_assoc sends an async request.
> + *
> + * Return success because this is what LLDDs do; silently
> + * drop the response.
> */
> + lsrsp->done(lsrsp);
> kmem_cache_free(lsreq_cache, tls_req);
> return 0;
> }
>
> ---
> base-commit: b320789d6883cc00ac78ce83bccbfe7ed58afcf0
> change-id: 20250901-nvme-fc-fix-leaks-4a25ca3875ab
>
> Best regards,
> --
> Daniel Wagner <wagi@kernel.org>
>
--
Best Regards,
Yi Zhang
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-09-02 19:11 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-01 15:51 [PATCH] nvmet-fcloop: call done callback even when remote port is gone Daniel Wagner
2025-09-02 8:56 ` Hannes Reinecke
2025-09-02 13:23 ` Yi Zhang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).