Hi Stephen,

On Mon,  5 May 2008 10:56:38 -0700 Stephen Neuendorffer <[EMAIL PROTECTED]> 
wrote:
>
> +static struct device_node *find_dcr_parent(struct device_node *node)
> +{
> +     struct device_node *par, *tmp;
> +     const u32 *p;
> +
> +     for (par = of_node_get(node); par;) {
> +             if (of_get_property(par, "dcr-controller", NULL))
> +                     break;
> +             p = of_get_property(par, "dcr-parent", NULL);
> +             tmp = par;
> +             if (p == NULL)
> +                     par = of_get_parent(par);
> +             else
> +                     par = of_find_node_by_phandle(*p);
> +             of_node_put(tmp);
> +     }
> +     return par;
> +}

        .
        .

> +dcr_host_t dcr_map_generic(struct device_node *dev,
> +                        unsigned int dcr_n,
> +                        unsigned int dcr_c)
> +{
> +     dcr_host_t host;
> +     struct device_node *dp;
> +     const char *prop;
> +
> +     host.type = DCR_HOST_INVALID;
> +
> +     dp = find_dcr_parent(dev);
> +     if (dp == NULL)
> +             return host;
> +
> +     prop = of_get_property(dp, "dcr-access-method", NULL);
> +
> +     pr_debug("dcr_map_generic(dcr-access-method = %s)\n", prop);
> +
> +     if (!strcmp(prop, "native")) {
> +             host.type = DCR_HOST_NATIVE;
> +             host.host.native = dcr_map_native(dev, dcr_n, dcr_c);
> +     } else if (!strcmp(prop, "mmio")) {
> +             host.type = DCR_HOST_MMIO;
> +             host.host.mmio = dcr_map_mmio(dev, dcr_n, dcr_c);
> +     }
> +
> +     return host;

Since find_dcr_parent has done a of_node_get on its return value, you
leak a reference to dp here i.e. you need an of_node_put(dp) before you
return.

-- 
Cheers,
Stephen Rothwell                    [EMAIL PROTECTED]
http://www.canb.auug.org.au/~sfr/

Attachment: pgpK2ufAulMkU.pgp
Description: PGP signature

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to