Re: [PATCH -next 2/5] drm/mediatek: Fix missing of_node_put() for mtk_drm_get_all_drm_priv()

From: Marion & Christophe JAILLET
Date: Sun Aug 25 2024 - 01:17:45 EST




Le 23/08/2024 à 12:46, Christophe JAILLET a écrit :
@@ -933,10 +931,8 @@ static int mtk_drm_probe(struct platform_device *pdev)
          }
          ret = mtk_ddp_comp_init(node, &private->ddp_comp[comp_id], comp_id);
-        if (ret) {
-            of_node_put(node);
+        if (ret)
              goto err_node;

Hi,

I've seen on another thread that is was not sure that scoped versions and gotos played well together.

It was asked to check more in details and confirm that it was safe before applying the patch.

I've not followed the discussion, so I just point it out, in case it helps.

I'll try to give it a look in the coming days.


CJ


Hi,
looking at the generated asm file (gcc 14.2.1), everything looks fine.

# drivers/gpu/drm/mediatek/mtk_drm_drv.c:933: ret = mtk_ddp_comp_init(node, &private->ddp_comp[comp_id], comp_id);
salq $5, %rax #, _36
movl %r14d, %edx # comp_id,
movq %rbx, %rdi # node,
leaq 552(%rbp,%rax), %rsi #, _28
call mtk_ddp_comp_init #
movl %eax, %r12d # tmp205, <retval>
# drivers/gpu/drm/mediatek/mtk_drm_drv.c:934: if (ret)
testl %eax, %eax # <retval>
jne .L212 #,

...

.L212:
# ./include/linux/of.h:138: DEFINE_FREE(device_node, struct device_node *, if (_T) of_node_put(_T))
movq %rbx, %rdi # node,
call of_node_put #
jmp .L171 #

CJ