[PATCH] arm/mach: Hold reference returned by of_find_xxx APIs

Russell King (Oracle) linux at armlinux.org.uk
Tue Jun 28 09:16:04 PDT 2022


On Tue, Jun 28, 2022 at 06:59:45AM +0300, Tony Lindgren wrote:
> * Liang He <windhl at 126.com> [220621 12:14]:
> > diff --git a/arch/arm/mach-omap2/pmic-cpcap.c b/arch/arm/mach-omap2/pmic-cpcap.c
> > index 668dc84fd31e..a7368d657aa8 100644
> > --- a/arch/arm/mach-omap2/pmic-cpcap.c
> > +++ b/arch/arm/mach-omap2/pmic-cpcap.c
> > @@ -238,8 +238,11 @@ static struct omap_voltdm_pmic omap4_fan_iva = {
> >  int __init omap4_cpcap_init(void)
> >  {
> >  	struct voltagedomain *voltdm;
> > +	struct device_node *np;
> >  
> > -	if (!of_find_compatible_node(NULL, NULL, "motorola,cpcap"))
> > +	np = of_find_compatible_node(NULL, NULL, "motorola,cpcap");
> > +	of_node_put(np);
> > +	if (!np)
> >  		return -ENODEV;
> 
> Hmm so here you are checking for !np after of_node_put()?

This is permissible, because the value of the _pointer_ is being
checked without dereferencing the pointer. So the fact that the
node may have been freed is actually immaterial.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!



More information about the linux-arm-kernel mailing list