Hi, Abhinav On 2022/6/11 7:20, Abhinav Kumar wrote: > > > On 6/7/2022 4:08 AM, Miaoqian Lin wrote: >> of_graph_get_remote_node() returns remote device node pointer with >> refcount incremented, we should use of_node_put() on it >> when not need anymore. >> Add missing of_node_put() to avoid refcount leak. >> >> Fixes: 86418f90a4c1 ("drm: convert drivers to use of_graph_get_remote_node") >> Signed-off-by: Miaoqian Lin <linmq006@xxxxxxxxx> >> --- >> drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 2 ++ >> 1 file changed, 2 insertions(+) >> > > This patch itself looks fine and will cover the cases when there was an error and we did not release the refcount. > > But, even in the normal cases I am not finding where we are releasing the refcount for the panel_node. > > I dont see a of_node_put() on mdp4_lcdc_encoder->panel_node. > Thanks for your review. I don't see it either. It's a bit messy because the reference assigned to mdp4_lcdc_encoder->panel_node and mdp4_lvds_connector->panel_node both. > Am i missing something? > >> diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c >> index fb48c8c19ec3..17cb1fc78379 100644 >> --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c >> +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c >> @@ -216,6 +216,7 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms, >> encoder = mdp4_lcdc_encoder_init(dev, panel_node); >> if (IS_ERR(encoder)) { >> DRM_DEV_ERROR(dev->dev, "failed to construct LCDC encoder\n"); >> + of_node_put(panel_node); >> return PTR_ERR(encoder); >> } >> @@ -225,6 +226,7 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms, >> connector = mdp4_lvds_connector_init(dev, panel_node, encoder); >> if (IS_ERR(connector)) { >> DRM_DEV_ERROR(dev->dev, "failed to initialize LVDS connector\n"); >> + of_node_put(panel_node); >> return PTR_ERR(connector); >> } >>