From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Marco Felsch <m.felsch@pengutronix.de>
Cc: andrzej.hajda@intel.com, neil.armstrong@linaro.org,
rfoss@kernel.org, jonas@kwiboo.se, jernej.skrabec@gmail.com,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
kernel@pengutronix.de
Subject: Re: [PATCH 3/3] drm/bridge: fsl-ldb: simplify device_node error handling
Date: Thu, 15 May 2025 00:44:10 +0200 [thread overview]
Message-ID: <20250514224410.GL23592@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20250514222453.440915-4-m.felsch@pengutronix.de>
Hi Marco,
On Thu, May 15, 2025 at 12:24:53AM +0200, Marco Felsch wrote:
> Make use of __free(device_node) to simplify the of_node_put() error
> handling paths. No functional changes.
>
> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> ---
> drivers/gpu/drm/bridge/fsl-ldb.c | 24 +++++++++---------------
> 1 file changed, 9 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-ldb.c
> index e0a229c91953..cea9ddaa5e01 100644
> --- a/drivers/gpu/drm/bridge/fsl-ldb.c
> +++ b/drivers/gpu/drm/bridge/fsl-ldb.c
> @@ -287,8 +287,9 @@ static const struct drm_bridge_funcs funcs = {
> static int fsl_ldb_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> - struct device_node *panel_node;
> - struct device_node *remote1, *remote2;
> + struct device_node *panel_node __free(device_node) = NULL;
> + struct device_node *remote1 __free(device_node) = NULL;
> + struct device_node *remote2 __free(device_node) = NULL;
> struct drm_panel *panel;
> struct fsl_ldb *fsl_ldb;
> int dual_link;
> @@ -321,21 +322,16 @@ static int fsl_ldb_probe(struct platform_device *pdev)
> remote2 = of_graph_get_remote_node(dev->of_node, 2, 0);
> fsl_ldb->ch0_enabled = (remote1 != NULL);
> fsl_ldb->ch1_enabled = (remote2 != NULL);
> - panel_node = of_node_get(remote1 ? remote1 : remote2);
> - of_node_put(remote1);
> - of_node_put(remote2);
> + panel_node = remote1 ? remote1 : remote2;
This will cause a double put of panel_node, once due to __free() on
remote1 or remote2, and the second time due to __free() on panel_node.
>
> - if (!fsl_ldb->ch0_enabled && !fsl_ldb->ch1_enabled) {
> - of_node_put(panel_node);
> + if (!fsl_ldb->ch0_enabled && !fsl_ldb->ch1_enabled)
> return dev_err_probe(dev, -ENXIO, "No panel node found");
> - }
>
> dev_dbg(dev, "Using %s\n",
> fsl_ldb_is_dual(fsl_ldb) ? "dual-link mode" :
> fsl_ldb->ch0_enabled ? "channel 0" : "channel 1");
>
> panel = of_drm_find_panel(panel_node);
> - of_node_put(panel_node);
> if (IS_ERR(panel))
> return dev_err_probe(dev, PTR_ERR(panel), "drm panel not found\n");
>
> @@ -345,14 +341,12 @@ static int fsl_ldb_probe(struct platform_device *pdev)
> "drm panel-bridge add failed\n");
>
> if (fsl_ldb_is_dual(fsl_ldb)) {
> - struct device_node *port1, *port2;
> + struct device_node *port1 __free(device_node) =
> + of_graph_get_port_by_id(dev->of_node, 1);
> + struct device_node *port2 __free(device_node) =
> + of_graph_get_port_by_id(dev->of_node, 2);
>
> - port1 = of_graph_get_port_by_id(dev->of_node, 1);
> - port2 = of_graph_get_port_by_id(dev->of_node, 2);
> dual_link = drm_of_lvds_get_dual_link_pixel_order(port1, port2);
> - of_node_put(port1);
> - of_node_put(port2);
> -
> if (dual_link < 0)
> return dev_err_probe(dev, dual_link,
> "Error getting dual link configuration\n");
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2025-05-14 22:44 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-14 22:24 [PATCH 0/3] i.MX fsl-ldb cleanups Marco Felsch
2025-05-14 22:24 ` [PATCH 1/3] drm/bridge: fsl-ldb: make use of driver_private Marco Felsch
2025-05-14 22:45 ` Laurent Pinchart
2025-05-14 23:04 ` Marco Felsch
2025-05-24 0:38 ` Dmitry Baryshkov
2025-05-14 22:24 ` [PATCH 2/3] drm/bridge: fsl-ldb: make use of dev_err_probe Marco Felsch
2025-05-14 22:36 ` Laurent Pinchart
2025-05-15 6:21 ` Alexander Stein
2025-05-14 22:24 ` [PATCH 3/3] drm/bridge: fsl-ldb: simplify device_node error handling Marco Felsch
2025-05-14 22:44 ` Laurent Pinchart [this message]
2025-05-14 23:07 ` Marco Felsch
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=20250514224410.GL23592@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=kernel@pengutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=m.felsch@pengutronix.de \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.org \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
/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.