24 Oct, 2017

1 commit

  • don't use prettyprint_part_size() in create_gpt_partitions_list()
    that avoid to align offset and size to 1 MiB and increase precision for
    start and size.
    This patch avoid the risk to change partition size and lost data during
    rename or swap.

    Signed-off-by: Patrick Delaunay
    Acked-by: Stephen Warren
    Tested-by: Stephen Warren

    Patrick Delaunay
     

07 Oct, 2017

1 commit

  • The recent changes to these files did not completely fix the previous
    issues, or introduced different (minor) issues. In cmd/gpt.c we need to
    dereference str_disk_guid to be sure that malloc worked. In
    cmd/nvedit.c we need to be careful that we can also fit in that leading
    space when adding to the string. And in tools/fit_image.c we need to
    re-work the error handling slightly in fit_import_data() so that we only
    call munmap() once. We have two error paths here, one where we have an
    fd to close and one where we do not. Adjust labels to match this.

    Reported-by: Coverity (CID: 167366, 167367, 167370)
    Signed-off-by: Tom Rini

    Tom Rini
     

06 Oct, 2017

1 commit

  • Create a common exit for most of the error handling code in
    do_rename_gpt_parts. Delete the list elements in disk_partitions
    before calling INIT_LIST_HEAD from get_gpt_info() a second time.

    The SIZEOF_MISMATCH error is not addressed, since that problem was
    already fixed by "GPT: incomplete initialization in
    allocate_disk_part".

    Signed-off-by: Alison Chaiken
    Reported-by: Coverity (CID: 167222, 167235, 167237)
    Reviewed-by: Tom Rini

    Alison Chaiken
     

27 Sep, 2017

1 commit

  • memset(newpart, '\0', sizeof(newpart));
    only initializes the firest 4 or 8 bytes of *newpart and not the whole
    structure disk_part.

    We should use sizeof(struct disk_part).

    Instead of malloc and memset we can use calloc.

    Identified by cppcheck.

    Fixes: 09a49930e41 GPT: read partition table from device into a data structure
    Reported-by: Coverity (CID: 167228)
    Cc: Stefan Roese
    Signed-off-by: Heinrich Schuchardt
    Reviewed-by: Stefan Roese
    Reviewed-by: Simon Glass

    Heinrich Schuchardt
     

16 Aug, 2017

2 commits

  • We are now using an env_ prefix for environment functions. Rename these
    two functions for consistency. Also add function comments in common.h.

    Quite a few places use getenv() in a condition context, provoking a
    warning from checkpatch. These are fixed up in this patch also.

    Suggested-by: Wolfgang Denk
    Signed-off-by: Simon Glass

    Simon Glass
     
  • We are now using an env_ prefix for environment functions. Rename setenv()
    for consistency. Also add function comments in common.h.

    Suggested-by: Wolfgang Denk
    Signed-off-by: Simon Glass

    Simon Glass
     

05 Aug, 2017

3 commits

  • Strings read from devices may sometimes fail to be
    NULL-terminated. The functions in lib/string.c are subject to
    failure in this case. Protect against observed failures in
    set_gpt_info() by switching to length-checking variants with a length
    limit of the maximum possible partition table length. At the same
    time, add a few checks for NULL string pointers.

    Here is an example as observed in sandbox under GDB:

    => gpt verify host 0 $partitions
    Program received signal SIGSEGV, Segmentation fault.
    0x0000000000477747 in strlen (s=0x0) at lib/string.c:267
    267 for (sc = s; *sc != '\0'; ++sc)
    (gdb) bt
    #0 0x0000000000477747 in strlen (s=0x0) at lib/string.c:267
    #1 0x00000000004140b2 in set_gpt_info (str_part=,
    str_disk_guid=str_disk_guid@entry=0x7fffffffdbe8, partitions=partitions@entry=0x7fffffffdbd8,
    parts_count=parts_count@entry=0x7fffffffdbcf "", dev_desc=) at cmd/gpt.c:415
    #2 0x00000000004145b9 in gpt_verify (str_part=, blk_dev_desc=0x7fffef09a9d0) at cmd/gpt.c:580
    #3 do_gpt (cmdtp=, flag=, argc=, argv=0x7fffef09a8f0)
    at cmd/gpt.c:783
    #4 0x00000000004295b0 in cmd_call (argv=0x7fffef09a8f0, argc=0x5, flag=,
    cmdtp=0x714e20 ) at common/command.c:500
    #5 cmd_process (flag=, argc=0x5, argv=0x7fffef09a8f0,
    repeatable=repeatable@entry=0x726c04 , ticks=ticks@entry=0x0) at common/command.c:539

    Suggested-by: Lothar Waßmann
    Signed-off-by: Alison Chaiken

    Alison Chaiken
     
  • This patch provides support in u-boot for renaming GPT
    partitions. The renaming is accomplished via new 'gpt swap'
    and 'gpt rename' commands.

    The 'swap' mode returns an error if no matching partition names
    are found, or if the number of partitions with one name does not equal
    the number with the second name. The 'rename' variant always
    succeeds as long as a partition with the provided number exists.

    Rewriting the partition table has the side-effect that all partitions
    end up with "msftdata" flag set. The reason is that partition type
    PARTITION_BASIC_DATA_GUID is hard-coded in the gpt_fill_pte()
    function. This does not appear to cause any harm.

    Signed-off-by: Alison Chaiken

    Alison Chaiken
     
  • Make the partition table available for modification by reading it from
    the user-specified device into a linked list. Provide an accessor
    function for command-line testing.

    Signed-off-by: Alison Chaiken
    [trini: Make this depend on CMD_GPT_RENAME, as it is the user of this
    code]
    Signed-off-by: Tom Rini

    Alison Chaiken
     

04 Aug, 2017

1 commit

  • In order to read the GPT, modify the partition name strings, and then
    write out a new GPT, the disk GUID is needed. While there is an
    existing accessor for the partition UUIDs, there is none yet for the
    disk GUID.

    Changes since v6: none.

    Signed-off-by: Alison Chaiken

    Alison Chaiken
     

18 Mar, 2017

1 commit


28 Jan, 2017

1 commit


06 Aug, 2016

1 commit

  • The calculation of "dev_desc->lba - 34 - 1 - offset" is not correct for
    size '-', because both fist_usable_lba and last_usable_lba will remain
    34 sectors.

    We can simply use 0 for size '-' because the part_efi module will decode
    the size and auto extend the size to maximum available size.

    Signed-off-by: Kever Yang

    Kever Yang
     

13 Jun, 2016

1 commit


15 Mar, 2016

2 commits


25 Jan, 2016

1 commit

  • Now that they are in their own directory, we can remove this prefix.
    This makes it easier to find a file since the prefix does not get in the
    way.

    Signed-off-by: Simon Glass
    Reviewed-by: Bin Meng
    Reviewed-by: Heiko Schocher
    Acked-by: Stefan Roese
    Acked-by: Przemyslaw Marczak

    Simon Glass