Commit c39ee2d2 authored by Felix Gu's avatar Felix Gu Committed by Helge Deller
Browse files

fbdev: of_display_timing: Fix device node reference leak in of_get_display_timings()



Use for_each_child_of_node_scoped instead of for_each_child_of_node
to ensure automatic of_node_put on early exit paths, preventing
device node reference leak.

Fixes: cc3f414c ("video: add of helper for display timings/videomode")
Signed-off-by: default avatarFelix Gu <ustc.gu@gmail.com>
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent c595c196
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -195,7 +195,7 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
	disp->num_timings = 0;
	disp->native_mode = 0;

	for_each_child_of_node(timings_np, entry) {
	for_each_child_of_node_scoped(timings_np, child) {
		struct display_timing *dt;
		int r;

@@ -206,7 +206,7 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
			goto timingfail;
		}

		r = of_parse_display_timing(entry, dt);
		r = of_parse_display_timing(child, dt);
		if (r) {
			/*
			 * to not encourage wrong devicetrees, fail in case of
@@ -218,7 +218,7 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
			goto timingfail;
		}

		if (native_mode == entry)
		if (native_mode == child)
			disp->native_mode = disp->num_timings;

		disp->timings[disp->num_timings] = dt;