* Rob Herring <robh+dt@xxxxxxxxxx> [170727 15:19]: > On Thu, Jul 27, 2017 at 4:44 AM, Tony Lindgren <tony@xxxxxxxxxxx> wrote: > > --- a/drivers/of/property.c > > +++ b/drivers/of/property.c > > @@ -708,6 +708,15 @@ struct device_node *of_graph_get_port_parent(struct device_node *node) > > { > > unsigned int depth; > > > > + if (!node) > > + return NULL; > > + > > + /* > > + * Preserve usecount for passed in node as of_get_next_parent() > > + * will do of_node_put() on it. > > + */ > > + of_node_get(node); > > I think this messes up of_graph_get_remote_port_parent(). First it > calls of_graph_get_remote_endpoint which returns the endpoint node > with ref count incremented. Then you are incrementing it again here. Hmm OK looks like I missed that one. If we want to have of_graph_get_port_parent not trash the node passed to it, we should just change things there too: struct device_node *of_graph_get_remote_port_parent( const struct device_node *node) { struct device_node *np, *pp; /* Get remote endpoint node. */ np = of_graph_get_remote_endpoint(node); pp = of_graph_get_port_parent(np); of_node_put(np); return pp; } EXPORT_SYMBOL(of_graph_get_remote_port_parent); Does that make sense to you? > > diff --git a/sound/soc/generic/audio-graph-card.c b/sound/soc/generic/audio-graph-card.c > > --- a/sound/soc/generic/audio-graph-card.c > > +++ b/sound/soc/generic/audio-graph-card.c > > @@ -224,7 +224,6 @@ static int asoc_graph_card_parse_of(struct graph_card_data *priv) > > > > of_for_each_phandle(&it, rc, node, "dais", NULL, 0) { > > ret = asoc_graph_card_dai_link_of(it.node, priv, idx++); > > - of_node_put(it.node); > > if (ret < 0) > > return ret; > > I think you need a put here. Do you mean on error it should be as below, right? ret = asoc_graph_card_dai_link_of(it.node, priv, idx++); if (ret < 0) { of_node_put(it.node); return ret; } Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html