hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/of/resolver.c
....@@ -206,16 +206,22 @@
206206 for_each_child_of_node(local_fixups, child) {
207207
208208 for_each_child_of_node(overlay, overlay_child)
209
- if (!node_name_cmp(child, overlay_child))
209
+ if (!node_name_cmp(child, overlay_child)) {
210
+ of_node_put(overlay_child);
210211 break;
212
+ }
211213
212
- if (!overlay_child)
214
+ if (!overlay_child) {
215
+ of_node_put(child);
213216 return -EINVAL;
217
+ }
214218
215219 err = adjust_local_phandle_references(child, overlay_child,
216220 phandle_delta);
217
- if (err)
221
+ if (err) {
222
+ of_node_put(child);
218223 return err;
224
+ }
219225 }
220226
221227 return 0;
....@@ -281,7 +287,7 @@
281287 adjust_overlay_phandles(overlay, phandle_delta);
282288
283289 for_each_child_of_node(overlay, local_fixups)
284
- if (!of_node_cmp(local_fixups->name, "__local_fixups__"))
290
+ if (of_node_name_eq(local_fixups, "__local_fixups__"))
285291 break;
286292
287293 err = adjust_local_phandle_references(local_fixups, overlay, phandle_delta);
....@@ -291,7 +297,7 @@
291297 overlay_fixups = NULL;
292298
293299 for_each_child_of_node(overlay, child) {
294
- if (!of_node_cmp(child->name, "__fixups__"))
300
+ if (of_node_name_eq(child, "__fixups__"))
295301 overlay_fixups = child;
296302 }
297303
....@@ -315,8 +321,11 @@
315321
316322 err = of_property_read_string(tree_symbols,
317323 prop->name, &refpath);
318
- if (err)
324
+ if (err) {
325
+ pr_err("node label '%s' not found in live devicetree symbols table\n",
326
+ prop->name);
319327 goto out;
328
+ }
320329
321330 refnode = of_find_node_by_path(refpath);
322331 if (!refnode) {