summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorGeert Uytterhoeven <geert+renesas@glider.be>2023-07-28 10:50:28 +0200
committerRob Herring <robh@kernel.org>2023-08-23 20:04:17 -0500
commita9515ff4fb142b690a0d2b58782b15903b990dba (patch)
tree0ddb4c828070cdf5334a7106a0557235f19aaa41 /block
parent500d45100aa8546a000eef85bba8c2abc7b36e92 (diff)
of: overlay: Call of_changeset_init() early
When of_overlay_fdt_apply() fails, the changeset may be partially applied, and the caller is still expected to call of_overlay_remove() to clean up this partial state. However, of_overlay_apply() calls of_resolve_phandles() before init_overlay_changeset(). Hence if the overlay fails to apply due to an unresolved symbol, the overlay_changeset.cset.entries list is still uninitialized, and cleanup will crash with a NULL-pointer dereference in overlay_removal_is_ok(). Fix this by moving the call to of_changeset_init() from init_overlay_changeset() to of_overlay_fdt_apply(), where all other early initialization is done. Fixes: f948d6d8b792bb90 ("of: overlay: avoid race condition between applying multiple overlays") Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Link: https://lore.kernel.org/r/4f1d6d74b61cba2599026adb6d1948ae559ce91f.1690533838.git.geert+renesas@glider.be Signed-off-by: Rob Herring <robh@kernel.org>
Diffstat (limited to 'block')
0 files changed, 0 insertions, 0 deletions