>> The call to of_find_compatible_node returns a node pointer with refcount >> incremented thus it must be explicitly decremented after the last >> usage. >> irq_domain_add_linear also calls of_node_get to increase refcount, >> so irq_domain will not be affected when it is released. >> >> Detected by coccinelle with the following warnings: >> ./arch/powerpc/platforms/8xx/pic.c:158:1-7: ERROR: missing of_node_put; >> acquired a node pointer with refcount incremented on line 136, but without a >> corresponding object release within this function. >> >> Fixes: a8db8cf0d894 ("irq_domain: Replace irq_alloc_host() with >> revmap-specific initializers") >> Signed-off-by: Wen Yang <wen.yan...@zte.com.cn> >> Suggested-by: Christophe Leroy <christophe.le...@c-s.fr> >> Reviewed-by: Peng Hao <peng.h...@zte.com.cn> >> Cc: Vitaly Bordug <v...@kernel.crashing.org> >> Cc: Benjamin Herrenschmidt <b...@kernel.crashing.org> >> Cc: Paul Mackerras <pau...@samba.org> >> Cc: Michael Ellerman <m...@ellerman.id.au> >> Cc: linuxppc-dev@lists.ozlabs.org >> Cc: linux-ker...@vger.kernel.org >> --- >> arch/powerpc/platforms/8xx/pic.c | 2 -- >> 1 file changed, 2 deletions(-) >> >> diff --git a/arch/powerpc/platforms/8xx/pic.c >> b/arch/powerpc/platforms/8xx/pic.c >> index 8d5a25d..4453df6 100644 >> --- a/arch/powerpc/platforms/8xx/pic.c >> +++ b/arch/powerpc/platforms/8xx/pic.c >> @@ -153,9 +153,7 @@ int mpc8xx_pic_init(void) >> if (mpc8xx_pic_host == NULL) { >> printk(KERN_ERR "MPC8xx PIC: failed to allocate irq host!\n"); >> ret = -ENOMEM; >> - goto out; >> } >> - return 0; > > It's fragile to rely on ret being equal to zero here. If the code > further up is changed it's easy enough to miss that ret is expected to > be zero. > > Better to set it to zero here explicitly, this is the success path after > all, eg: > > ret = 0; >
Thank you for your comments. I'll fix it soon. Thanks and regards, Wen