• Frank Rowand's avatar
    of: overlay: avoid race condition between applying multiple overlays · f948d6d8
    Frank Rowand authored
    The process of applying an overlay consists of:
      - unflatten an overlay FDT (flattened device tree) into an
        EDT (expanded device tree)
      - fixup the phandle values in the overlay EDT to fit in a
        range above the phandle values in the live device tree
      - create the overlay changeset to reflect the contents of
        the overlay EDT
      - apply the overlay changeset, to modify the live device tree,
        potentially changing the maximum phandle value in the live
        device tree
    
    There is currently no protection against two overlay applies
    concurrently determining what range of phandle values are in use
    in the live device tree, and subsequently changing that range.
    Add a mutex to prevent multiple overlay applies from occurring
    simultaneously.
    
    Move of_resolve_phandles() into of_overlay_apply() so that it does not
    have to be duplicated by each caller of of_overlay_apply().
    
    The test in of_resolve_phandles() that the overlay tree is detached is
    temporarily disabled so that old style overlay unittests do not fail.
    Signed-off-by: default avatarFrank Rowand <frank.rowand@sony.com>
    Signed-off-by: default avatarRob Herring <robh@kernel.org>
    f948d6d8
of_private.h 5.11 KB