Re: [PATCH v2 1/3] EDAC/versalnet: Fix teardown ordering in mc_remove()

Shubhrajyoti Datta <[email protected]>
Newsgroups org.kernel.vger.linux-edac,org.kernel.vger.linux-kernel
Message-ID <CAKfKVtHUqcvv97E2CoETtU2tN5+9SYAgDde=bYQw16hirPM4yw@mail.gmail.com>
On Wed, Apr 1, 2026 at 4:56 PM Prasanna Kumar T S M
<[email protected]> wrote:
>
> The teardown sequence in mc_remove() does not mirror the reverse of the
> initialization order in mc_probe(). In particular,
> unregister_rpmsg_driver() is called before remove_versalnet(), and
> cdx_mcdi_finish() is called after rproc_shutdown().
>
> Reorder mc_remove() to reverse the probe initialization sequence,
> consistent with the probe error-unwind paths.

I think that the remote proc should be quiescence first so that no
more messages will be
queued. and then the edac should be removed. See below.

>
> The rproc reference acquired via rproc_get_by_phandle() during probe
> is not released in mc_remove(), causing a reference count leak. Add
> the missing rproc_put() call.
>
> Fixes: d5fe2fec6c40 ("EDAC: Add a driver for the AMD Versal NET DDR controller")
> Signed-off-by: Prasanna Kumar T S M <[email protected]>
> ---
>  drivers/edac/versalnet_edac.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/edac/versalnet_edac.c b/drivers/edac/versalnet_edac.c
> index b87fe57aa842..acd51b492772 100644
> --- a/drivers/edac/versalnet_edac.c
> +++ b/drivers/edac/versalnet_edac.c
> @@ -955,10 +955,11 @@ static void mc_remove(struct platform_device *pdev)
>  {
>         struct mc_priv *priv = platform_get_drvdata(pdev);
>
> -       unregister_rpmsg_driver(&amd_rpmsg_driver);
>         remove_versalnet(priv);

Here we are removing the edac but the remoteproc  can be triggered.
calling the remote callback.

> -       rproc_shutdown(priv->mcdi->r5_rproc);
>         cdx_mcdi_finish(priv->mcdi);
> +       unregister_rpmsg_driver(&amd_rpmsg_driver);
> +       rproc_shutdown(priv->mcdi->r5_rproc);
> +       rproc_put(priv->mcdi->r5_rproc);
The put is a valid fix.

>         kfree(priv->mcdi);
>  }
>
> --
> 2.49.0
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.