From: Dan Carpenter <dan.carpenter@linaro.org>
To: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: Andrea della Porta <andrea.porta@suse.com>,
Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Rob Herring <robh@kernel.org>,
Saravana Kannan <saravanak@google.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Florian Fainelli <florian.fainelli@broadcom.com>,
linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH] misc: rp1: Fix some error handling paths
Date: Tue, 21 Oct 2025 08:26:20 +0300 [thread overview]
Message-ID: <aPcZfI4qePMNuil8@stanley.mountain> (raw)
In-Reply-To: <4e92a271fdb98560c4e659556a1f3e99e7d0d38e.1760987458.git.christophe.jaillet@wanadoo.fr>
On Mon, Oct 20, 2025 at 09:11:16PM +0200, Christophe JAILLET wrote:
> Error handling in the probe and the clean-up path in the remove function
> should be adjusted depending on if data is taken from DT or from overlay at
> runtime.
>
> of_overlay_remove() should not be called when of_overlay_remove() was not
> called.
>
> of_node_put() should be called in the remove function to avoid a potential
> reference leak.
>
> Fixes: 49d63971f963 ("misc: rp1: RaspberryPi RP1 misc driver")
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
> This patch is compile tested only.
>
> I think (hope...) that a cleaner solution is possible. So feel free to
> improve it or completely change it if needed.
> ---
> drivers/misc/rp1/rp1_pci.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/misc/rp1/rp1_pci.c b/drivers/misc/rp1/rp1_pci.c
> index 803832006ec8..9105269488a9 100644
> --- a/drivers/misc/rp1/rp1_pci.c
> +++ b/drivers/misc/rp1/rp1_pci.c
> @@ -44,6 +44,8 @@ struct rp1_dev {
> struct irq_data *pcie_irqds[64];
> void __iomem *bar1;
> int ovcs_id; /* overlay changeset id */
> + struct device_node *rp1_node; /* useful only if skip_ovl == true */
> + bool skip_ovl;
> bool level_triggered_irq[RP1_INT_END];
> };
>
> @@ -289,10 +291,14 @@ static int rp1_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> goto err_unload_overlay;
> }
>
> + rp1->skip_ovl = skip_ovl;
> + rp1->rp1_node = rp1_node;
This is a reference to the device tree node. We normally drop the
refcount when we're done reading what we want from it. So we can
call of_node_put(rp1->rp1_node) here on the success path.
We could just declare it with __free(device_node) and use cleanup.h.
> +
> return 0;
>
> err_unload_overlay:
> - of_overlay_remove(&rp1->ovcs_id);
> + if (!skip_ovl)
> + of_overlay_remove(&rp1->ovcs_id);
> err_unregister_interrupts:
> rp1_unregister_interrupts(pdev);
> err_put_node:
> @@ -308,8 +314,12 @@ static void rp1_remove(struct pci_dev *pdev)
> struct device *dev = &pdev->dev;
>
> of_platform_depopulate(dev);
> - of_overlay_remove(&rp1->ovcs_id);
It might be nice if of_overlay_remove() ignored when rp1->ovcs_id is
set to zero. Then we could call it unconditionally.
regards,
dan carpenter
next prev parent reply other threads:[~2025-10-21 5:26 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-20 19:11 [PATCH] misc: rp1: Fix some error handling paths Christophe JAILLET
2025-10-21 5:26 ` Dan Carpenter [this message]
2025-10-21 12:48 ` Andrea della Porta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aPcZfI4qePMNuil8@stanley.mountain \
--to=dan.carpenter@linaro.org \
--cc=andrea.porta@suse.com \
--cc=arnd@arndb.de \
--cc=bhelgaas@google.com \
--cc=christophe.jaillet@wanadoo.fr \
--cc=devicetree@vger.kernel.org \
--cc=florian.fainelli@broadcom.com \
--cc=gregkh@linuxfoundation.org \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh@kernel.org \
--cc=saravanak@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.