[PATCH] nvmet-fcloop: call done callback even when remote port is gone

Yi Zhang yi.zhang at redhat.com
Tue Sep 2 06:23:32 PDT 2025


On Mon, Sep 1, 2025 at 11:58 PM Daniel Wagner <wagi at 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 at 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 at 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 at 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 at kernel.org>
>


-- 
Best Regards,
  Yi Zhang




More information about the Linux-nvme mailing list