of_graph_get_remote_node() returns remote device nodepointer with refcount incremented, we should use of_node_put() on it when done. Add missing of_node_put() to avoid refcount leak.
Fixes: 318ba02cd8a8 ("drm/meson: encoder_cvbs: switch to bridge with ATTACH_NO_CONNECTOR") Signed-off-by: Miaoqian Lin linmq006@gmail.com --- drivers/gpu/drm/meson/meson_encoder_cvbs.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.c b/drivers/gpu/drm/meson/meson_encoder_cvbs.c index fd8db97ba8ba..8110a6e39320 100644 --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.c +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.c @@ -238,6 +238,7 @@ int meson_encoder_cvbs_init(struct meson_drm *priv) }
meson_encoder_cvbs->next_bridge = of_drm_find_bridge(remote); + of_node_put(remote); if (!meson_encoder_cvbs->next_bridge) { dev_err(priv->dev, "Failed to find CVBS Connector bridge\n"); return -EPROBE_DEFER;
of_graph_get_remote_node() returns remote device nodepointer with refcount incremented, we should use of_node_put() on it when done. Add missing of_node_put() to avoid refcount leak.
Fixes: e67f6037ae1b ("drm/meson: split out encoder from meson_dw_hdmi") Signed-off-by: Miaoqian Lin linmq006@gmail.com --- drivers/gpu/drm/meson/meson_encoder_hdmi.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c index 5e306de6f485..f3341458f8b7 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -363,6 +363,7 @@ int meson_encoder_hdmi_init(struct meson_drm *priv) }
meson_encoder_hdmi->next_bridge = of_drm_find_bridge(remote); + of_node_put(remote); if (!meson_encoder_hdmi->next_bridge) { dev_err(priv->dev, "Failed to find HDMI transceiver bridge\n"); return -EPROBE_DEFER;
Hello,
first of all: thank you for spotting this and sending a patch!
On Tue, May 31, 2022 at 4:49 PM Miaoqian Lin linmq006@gmail.com wrote: [...]
diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c index 5e306de6f485..f3341458f8b7 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -363,6 +363,7 @@ int meson_encoder_hdmi_init(struct meson_drm *priv) }
meson_encoder_hdmi->next_bridge = of_drm_find_bridge(remote);
of_node_put(remote);
further down in the same function remote is used again: pdev = of_find_device_by_node(remote);
My understanding is that we should only use of_node_put() once we don't need to access the node (in this case the variable is "remote") anymore.
Best regards, Martin
On Tue, May 31, 2022 at 4:49 PM Miaoqian Lin linmq006@gmail.com wrote:
of_graph_get_remote_node() returns remote device nodepointer with refcount incremented, we should use of_node_put() on it when done. Add missing of_node_put() to avoid refcount leak.
Fixes: 318ba02cd8a8 ("drm/meson: encoder_cvbs: switch to bridge with ATTACH_NO_CONNECTOR") Signed-off-by: Miaoqian Lin linmq006@gmail.com
Reviewed-by: Martin Blumenstingl martin.blumenstingl@googlemail.com
dri-devel@lists.freedesktop.org