Skip to content
Snippets Groups Projects
Select Git revision
9 results

fdt_overlay.c

Blame
    • David Gibson's avatar
      46743c41
      libfdt: Correct fdt handling of overlays without fixups and base trees without symbols · 46743c41
      David Gibson authored
      
      The fdt_overlay_apply() function purports to support the edge cases where
      an overlay has no fixups to be applied, or a base tree which has no
      symbols (the latter can only work if the former is also true).  However it
      gets it wrong in a couple of small ways:
      
        * In the no fixups case, it doesn't fail immediately, but will attempt
          fdt_for_each_property_offset() giving -FDT_ERR_NOTFOUND as the node
          offset, which will fail.  Instead it should succeed immediately, since
          there's nothing to do.
        * In the case of no symbols, it again doesn't fail immediately.  However
          if there is an actual fixup it will fail with an unexpected error,
          because -FDT_ERR_NOTFOUND is passed to fdt_getprop() when attempting to
          look up the symbols.  We should instead return -FDT_ERR_NOTFOUND
          directly.
      
      Both of these errors lead to the code returning misleading error codes in
      failing cases.
      
      [ DTC commit: 7d8ef6e1db9794f72805a0855f4f7f12fadd03d3 ]
      
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: default avatarStefan Agner <stefan.agner@toradex.com>
      Acked-by: default avatarSimon Glass <sjg@chromium.org>
      46743c41
      History
      libfdt: Correct fdt handling of overlays without fixups and base trees without symbols
      David Gibson authored
      
      The fdt_overlay_apply() function purports to support the edge cases where
      an overlay has no fixups to be applied, or a base tree which has no
      symbols (the latter can only work if the former is also true).  However it
      gets it wrong in a couple of small ways:
      
        * In the no fixups case, it doesn't fail immediately, but will attempt
          fdt_for_each_property_offset() giving -FDT_ERR_NOTFOUND as the node
          offset, which will fail.  Instead it should succeed immediately, since
          there's nothing to do.
        * In the case of no symbols, it again doesn't fail immediately.  However
          if there is an actual fixup it will fail with an unexpected error,
          because -FDT_ERR_NOTFOUND is passed to fdt_getprop() when attempting to
          look up the symbols.  We should instead return -FDT_ERR_NOTFOUND
          directly.
      
      Both of these errors lead to the code returning misleading error codes in
      failing cases.
      
      [ DTC commit: 7d8ef6e1db9794f72805a0855f4f7f12fadd03d3 ]
      
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: default avatarStefan Agner <stefan.agner@toradex.com>
      Acked-by: default avatarSimon Glass <sjg@chromium.org>