Skip to content
Snippets Groups Projects
Forked from Reform / reform-boundary-uboot
Source project has a limited visibility.
  • Shawn Guo's avatar
    8f7102cf
    disk: part_dos: fix part_get_info_extended() function · 8f7102cf
    Shawn Guo authored
    
    The check in part_get_info_extended() for a successful partition
    searching misses a condition for extended partition. In case of
    (ext_part_sector == 0), we should anyway mark the partition as found,
    even if it's an extended partition, i.e. (is_extended(pt->sys_ind) == 0).
    Otherwise, the extended partition (type 0x0f) will never be identified,
    and the following recursive call to part_get_info_extended() will get a
    wrong 'part_num' and 'which_part' parameter.  In the end, all those
    partitions in extended table will not be identified.
    
    Let's add the missing OR condition of (ext_part_sector == 0) for
    is_extended() check to fix the problem.
    
    The issue is discovered by running fastboot flash to an extended
    partition on eMMC.
    
      $ fastboot flash mmcsda5 cache.img
      target reported max download size of 536870912 bytes
      sending 'mmcsda5' (18796 KB)...
      OKAY [  2.144s]
      writing 'mmcsda5'...
      FAILED (remote: cannot find partition)
      finished. total time: 2.261s
    
    Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
    8f7102cf
    History
    disk: part_dos: fix part_get_info_extended() function
    Shawn Guo authored
    
    The check in part_get_info_extended() for a successful partition
    searching misses a condition for extended partition. In case of
    (ext_part_sector == 0), we should anyway mark the partition as found,
    even if it's an extended partition, i.e. (is_extended(pt->sys_ind) == 0).
    Otherwise, the extended partition (type 0x0f) will never be identified,
    and the following recursive call to part_get_info_extended() will get a
    wrong 'part_num' and 'which_part' parameter.  In the end, all those
    partitions in extended table will not be identified.
    
    Let's add the missing OR condition of (ext_part_sector == 0) for
    is_extended() check to fix the problem.
    
    The issue is discovered by running fastboot flash to an extended
    partition on eMMC.
    
      $ fastboot flash mmcsda5 cache.img
      target reported max download size of 536870912 bytes
      sending 'mmcsda5' (18796 KB)...
      OKAY [  2.144s]
      writing 'mmcsda5'...
      FAILED (remote: cannot find partition)
      finished. total time: 2.261s
    
    Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>