On Mon, Aug 26, 2024 at 02:43:23AM +0000, Kuninori Morimoto wrote: > We have endpoint base functions > - of_graph_get_next_device_endpoint() > - of_graph_get_device_endpoint_count() > - for_each_of_graph_device_endpoint() > + if (!prev) { > + /* > + * Find "ports" node from parent > + * > + * parent { > + * => ports { > + * port {...}; > + * }; > + * }; > + */ > + prev = of_get_child_by_name(parent, "ports"); > + > + /* > + * Use parent as its ports if it not exist > + * > + * => parent { > + * port {...}; > + * }; > + */ > + if (!prev) { > + prev = of_node_get(parent); > + > + /* check wether it has port node */ > + struct device_node *port __free(device_node) = > + of_get_child_by_name(prev, "port"); > + > + if (!port) > + prev = NULL; It looks like you leak here "prev". > + } > + > + return prev; > + } Best regards, Krzysztof