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