| From 069028047edbb095717e08abf3f23b5c23480936 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 31 Jan 2026 20:48:33 +0800 |
| Subject: fbdev: of_display_timing: Fix device node reference leak in |
| of_get_display_timings() |
| |
| From: Felix Gu <ustc.gu@gmail.com> |
| |
| [ Upstream commit c39ee2d264f98efa14aa46c9942114cb03c7baa6 ] |
| |
| 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: cc3f414cf2e4 ("video: add of helper for display timings/videomode") |
| Signed-off-by: Felix Gu <ustc.gu@gmail.com> |
| Signed-off-by: Helge Deller <deller@gmx.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/video/of_display_timing.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| diff --git a/drivers/video/of_display_timing.c b/drivers/video/of_display_timing.c |
| index bebd371c6b93e..a4cd446ac5a59 100644 |
| --- a/drivers/video/of_display_timing.c |
| +++ b/drivers/video/of_display_timing.c |
| @@ -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; |
| -- |
| 2.51.0 |
| |