Skip to content
  • Paul Burton's avatar
    image-fit: Fix fit_get_node_from_config semantics · bd86ef11
    Paul Burton authored
    Commit bac17b78 ("image-fit: switch ENOLINK to ENOENT") changed
    fit_get_node_from_config to return -ENOENT when a property doesn't
    exist, but didn't change any of its callers which check return values.
    Notably it didn't change boot_get_ramdisk, which leads to U-Boot failing
    to boot FIT images which don't include ramdisks with the following
    message:
    
      Ramdisk image is corrupt or invalid
    
    It also didn't take into account that by returning -ENOENT to denote the
    lack of a property we lost the ability to determine from the return
    value of fit_get_node_from_config whether it was the property or the
    configuration node that was missing, which may potentially lead callers
    to accept invalid FIT images.
    
    Fix this by having fit_get_node_from_config return -EINVAL when the
    configuration node isn't found and -ENOENT when the property isn't
    found, which seems to make semantic sense. Callers that previously
    checked for -ENOLINK are adjusted to check for -ENOENT, which fixes the
    breakage introduced by commit bac17b78 ("image-fit: switch ENOLINK
    to ENOENT").
    
    The only other user of the return fit_get_node_from_config return value,
    indirectly, is bootm_find_os which already checked for -ENOENT. From a
    read-through of the code I suspect it ought to have been checking for
    -ENOLINK prior to bac17b78
    
     ("image-fit: switch ENOLINK to ENOENT")
    anyway, which would make it right after this patch, but this would be
    good to get verified by someone who knows this x86 code or is able to
    test it.
    
    Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
    Cc: Jonathan Gray <jsg@jsg.id.au>
    Cc: Marek Vasut <marex@denx.de>
    Acked-by: default avatarMarek Vasut <marex@denx.de>
    Acked-by: default avatarStefan Roese <sr@denx.de>
    Acked-by: default avatarGeorge McCollister <george.mccollister@gmail.com>
    Tested-by: default avatarGeorge McCollister <george.mccollister@gmail.com>
    bd86ef11