Skip to content

Commit

Permalink
of: overlay: Correct symbol path fixups
Browse files Browse the repository at this point in the history
When symbols from overlays are added to the live tree their paths must
be rebased. The translated symbol is normally the result of joining
the fragment-relative path (with a leading "/") to the target path
(either copied directly from the "target-path" property or resolved
from the phandle). This translation fails when the target is the root
node (a common case for Raspberry Pi overlays) because the resulting
path starts with a double slash. For example, if target-path is "/" and
the fragment adds a node called "newnode", the label associated with
that node will be assigned the path "//newnode", which can't be found
in the tree.

Fix the failure case by explicitly replacing a target path of "/" with
an empty string.

Fixes: d1651b0 ("of: overlay: add overlay symbols to live device tree")

Signed-off-by: Phil Elwell <phil@raspberrypi.com>
  • Loading branch information
pelwell committed Mar 3, 2020
1 parent 1eea85e commit b6f79cd
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions drivers/of/overlay.c
Expand Up @@ -245,6 +245,8 @@ static struct property *dup_and_fixup_symbol_prop(
if (!target_path)
return NULL;
target_path_len = strlen(target_path);
if (!strcmp(target_path, "/"))
target_path_len = 0;

new_prop = kzalloc(sizeof(*new_prop), GFP_KERNEL);
if (!new_prop)
Expand Down

0 comments on commit b6f79cd

Please sign in to comment.