[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAHj4cs-7v_=LD5oKSGimH1_vKp0T5tmemqsMoAw+ZZGTMP9k9g@mail.gmail.com>
Date: Tue, 2 Sep 2025 21:23:32 +0800
From: Yi Zhang <yi.zhang@...hat.com>
To: Daniel Wagner <wagi@...nel.org>
Cc: James Smart <james.smart@...adcom.com>, Christoph Hellwig <hch@....de>,
Sagi Grimberg <sagi@...mberg.me>, linux-nvme@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] nvmet-fcloop: call done callback even when remote port is gone
On Mon, Sep 1, 2025 at 11:58 PM Daniel Wagner <wagi@...nel.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@...hat.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@...nel.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@...hat.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@...nel.org>
>
--
Best Regards,
Yi Zhang
Powered by blists - more mailing lists