Message ID | 20220512092114.38426-1-linmq006@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Neil Armstrong |
Headers | show |
Series | drm/meson: Fix refcount leak in meson_encoder_hdmi_init | expand |
Hi, On 12/05/2022 11:21, Miaoqian Lin wrote: > of_find_device_by_node() takes a reference to the embedded struct device, > we should use put_device() to release it when not need anymore. > Add missing put_device() in error path to avoid refcount leak. > > Fixes: 0af5e0b41110 ("drm/meson: encoder_hdmi: switch to bridge DRM_BRIDGE_ATTACH_NO_CONNECTOR") > Signed-off-by: Miaoqian Lin <linmq006@gmail.com> You already sent the same patch yesterday, please avoid this. Neil > --- > drivers/gpu/drm/meson/meson_encoder_hdmi.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c > index 5e306de6f485..de87f02cd388 100644 > --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c > +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c > @@ -435,8 +435,10 @@ int meson_encoder_hdmi_init(struct meson_drm *priv) > cec_fill_conn_info_from_drm(&conn_info, meson_encoder_hdmi->connector); > > notifier = cec_notifier_conn_register(&pdev->dev, NULL, &conn_info); > - if (!notifier) > + if (!notifier) { > + put_device(&pdev->dev); > return -ENOMEM; > + } > > meson_encoder_hdmi->cec_notifier = notifier; > }
Hi, On 2022/5/12 17:32, Neil Armstrong wrote: > Hi, > > On 12/05/2022 11:21, Miaoqian Lin wrote: >> of_find_device_by_node() takes a reference to the embedded struct device, >> we should use put_device() to release it when not need anymore. >> Add missing put_device() in error path to avoid refcount leak. >> >> Fixes: 0af5e0b41110 ("drm/meson: encoder_hdmi: switch to bridge DRM_BRIDGE_ATTACH_NO_CONNECTOR") >> Signed-off-by: Miaoqian Lin <linmq006@gmail.com> > > You already sent the same patch yesterday, please avoid this. > Sorry for the mistake, I realized this after I sent it. I will be more careful. > Neil > >> --- >> drivers/gpu/drm/meson/meson_encoder_hdmi.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c >> index 5e306de6f485..de87f02cd388 100644 >> --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c >> +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c >> @@ -435,8 +435,10 @@ int meson_encoder_hdmi_init(struct meson_drm *priv) >> cec_fill_conn_info_from_drm(&conn_info, meson_encoder_hdmi->connector); >> notifier = cec_notifier_conn_register(&pdev->dev, NULL, &conn_info); >> - if (!notifier) >> + if (!notifier) { >> + put_device(&pdev->dev); >> return -ENOMEM; >> + } >> meson_encoder_hdmi->cec_notifier = notifier; >> } >
diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c index 5e306de6f485..de87f02cd388 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -435,8 +435,10 @@ int meson_encoder_hdmi_init(struct meson_drm *priv) cec_fill_conn_info_from_drm(&conn_info, meson_encoder_hdmi->connector); notifier = cec_notifier_conn_register(&pdev->dev, NULL, &conn_info); - if (!notifier) + if (!notifier) { + put_device(&pdev->dev); return -ENOMEM; + } meson_encoder_hdmi->cec_notifier = notifier; }
of_find_device_by_node() takes a reference to the embedded struct device, we should use put_device() to release it when not need anymore. Add missing put_device() in error path to avoid refcount leak. Fixes: 0af5e0b41110 ("drm/meson: encoder_hdmi: switch to bridge DRM_BRIDGE_ATTACH_NO_CONNECTOR") Signed-off-by: Miaoqian Lin <linmq006@gmail.com> --- drivers/gpu/drm/meson/meson_encoder_hdmi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)