devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] of: overlay: set 'overlay_tree' and 'fdt' fields only on success
@ 2022-03-31  9:56 Slawomir Stepien
  2022-03-31 10:06 ` Alexander Sverdlin
  2022-04-04 20:38 ` Rob Herring
  0 siblings, 2 replies; 7+ messages in thread
From: Slawomir Stepien @ 2022-03-31  9:56 UTC (permalink / raw)
  To: pantelis.antoniou, frowand.list, robh+dt, devicetree
  Cc: krzysztof.adamski, tomasz.medrek, alexander.sverdlin

From: Slawomir Stepien <slawomir.stepien@nokia.com>

Before this change, the memory pointed by fields 'overlay_tree' and
'fdt' will be double freed by a call to free_overlay_changeset() from
of_overlay_apply(), when the init_overlay_changeset() fails.

The first free will happen under 'err_free_tree' label and for the
second time under 'err_free_overlay_changeset' label, where we call
free_overlay_changeset().

This could happen for example, when you are applying an overlay to a
target path that does not exists.

By setting the pointers only when we are sure that
init_overlay_changeset() will not fail, will prevent this double free.

Signed-off-by: Slawomir Stepien <slawomir.stepien@nokia.com>
---
 drivers/of/overlay.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c
index d80160cf34bb..a72a9a415f8f 100644
--- a/drivers/of/overlay.c
+++ b/drivers/of/overlay.c
@@ -750,9 +750,6 @@ static int init_overlay_changeset(struct overlay_changeset *ovcs,
 	if (!of_node_is_root(tree))
 		pr_debug("%s() tree is not root\n", __func__);
 
-	ovcs->overlay_tree = tree;
-	ovcs->fdt = fdt;
-
 	INIT_LIST_HEAD(&ovcs->ovcs_list);
 
 	of_changeset_init(&ovcs->cset);
@@ -829,6 +826,8 @@ static int init_overlay_changeset(struct overlay_changeset *ovcs,
 		goto err_free_fragments;
 	}
 
+	ovcs->overlay_tree = tree;
+	ovcs->fdt = fdt;
 	ovcs->id = id;
 	ovcs->count = cnt;
 	ovcs->fragments = fragments;
-- 
Slawomir Stepien

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-04-10 20:30 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-31  9:56 [PATCH] of: overlay: set 'overlay_tree' and 'fdt' fields only on success Slawomir Stepien
2022-03-31 10:06 ` Alexander Sverdlin
2022-04-04 20:38 ` Rob Herring
2022-04-04 21:02   ` Frank Rowand
2022-04-07 19:53     ` Frank Rowand
2022-04-08  6:05       ` Slawomir Stepien
2022-04-10 20:30   ` Frank Rowand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).