> + for_each_child_of_node(np, child) { > + u32 led; > + > + if (of_property_read_u32(child, "reg", &led)) > + goto skip_config; > + > + skip_config: > + of_node_put(child); There is no need for this put. So long as you don't break out of for_each_child_of_node() with a return, it will correctly release child at the end of each loop. A continue statement is also O.K. Andrew