Changeset 8559fa0 in mainline


Ignore:
Timestamp:
2013-07-26T11:33:15Z (11 years ago)
Author:
Dominik Taborsky (AT DOT) <brembyseznamcz>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1a1a735, 283ea3d
Parents:
9bdfde73
Message:

libgpt fixes

Location:
uspace
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/hdisk/func_gpt.c

    r9bdfde73 r8559fa0  
    194194       
    195195        char *name;
     196        printf("Name the partition: ");
    196197        rc = get_input_line(in, &name);
    197198        if (rc != EOK) {
     
    200201        }
    201202       
     203        printf("name: %s, len: %d\n", name, str_size(name));
    202204        gpt_set_part_name(p, name, str_size(name));
    203205       
  • uspace/app/hdisk/hdisk.c

    r9bdfde73 r8559fa0  
    199199                        case 'q':
    200200                                putchar('\n');
     201                                free_label();
    201202                                goto end;
    202203                        case 'r':
  • uspace/lib/gpt/libgpt.c

    r9bdfde73 r8559fa0  
    127127        rc = block_init(EXCHANGE_ATOMIC, dev_handle, 512);
    128128        if (rc != EOK)
    129                 return rc;
     129                goto fail;
    130130       
    131131        rc = block_get_bsize(dev_handle, &b_size);
    132132        if (rc != EOK)
    133                 return rc;
     133                goto fini_fail;
    134134       
    135135        if (label->gpt == NULL) {
    136136                label->gpt = gpt_alloc_header(b_size);
    137                 if (label->gpt == NULL)
    138                         return ENOMEM;
     137                if (label->gpt == NULL) {
     138                        rc = ENOMEM;
     139                        goto fini_fail;
     140                }
    139141        }
    140142       
     
    144146                rc = block_get_nblocks(dev_handle, &n_blocks);
    145147                if (rc != EOK)
    146                         goto fail;
     148                        goto free_fail;
    147149
    148150                rc = load_and_check_header(dev_handle, n_blocks - 1, b_size, label->gpt->header);
    149151                if (rc == EBADCHECKSUM || rc == EINVAL)
    150                         goto fail;
     152                        goto free_fail;
    151153        }
    152154       
     
    155157        return EOK;
    156158       
    157 fail:
    158         block_fini(dev_handle);
     159free_fail:
    159160        gpt_free_gpt(label->gpt);
    160161        label->gpt = NULL;
     162fini_fail:
     163        block_fini(dev_handle);
     164fail:
    161165        return rc;
    162166}
     
    240244         *  - we don't need more bytes
    241245         *  - the size of GPT partition entry can be different to 128 bytes */
     246        /* comm_size is ignored */
    242247        rc = block_init(EXCHANGE_SERIALIZE, label->device, sizeof(gpt_entry_t));
    243248        if (rc != EOK)
     
    247252        rc = block_get_bsize(label->device, &block_size);
    248253        if (rc != EOK)
    249                 goto fail;
     254                goto fini_fail;
    250255
    251256        //size_t bufpos = 0;
     
    266271
    267272                if (rc != EOK)
    268                         goto fail;
     273                        goto fini_fail;
    269274        }
    270275
     
    274279         * on all of the partition entry array.
    275280         */
    276         uint32_t crc = compute_crc32((uint8_t *) label->parts->part_array, label->parts->fill * sizeof(gpt_entry_t));
     281        uint32_t crc = compute_crc32((uint8_t *) label->parts->part_array,
     282                           label->parts->fill * sizeof(gpt_entry_t));
    277283
    278284        if(uint32_t_le2host(label->gpt->header->pe_array_crc32) != crc)
    279285        {
    280286                rc = EBADCHECKSUM;
    281                 goto fail;
    282         }
    283 
     287                goto fini_fail;
     288        }
     289       
     290        block_fini(label->device);
    284291        return EOK;
     292       
     293fini_fail:
     294        block_fini(label->device);
    285295       
    286296fail:
  • uspace/lib/gpt/libgpt.h

    r9bdfde73 r8559fa0  
    7171 */
    7272typedef struct {
    73         uint8_t efi_signature[8];
     73        uint8_t  efi_signature[8];
    7474        uint32_t revision;
    7575        uint32_t header_size;
     
    8080        uint64_t first_usable_lba;
    8181        uint64_t last_usable_lba;
    82         uint8_t disk_guid[16];
     82        uint8_t  disk_guid[16];
    8383        uint64_t entry_lba;
    8484        uint32_t fillries;
  • uspace/lib/mbr/libmbr.c

    r9bdfde73 r8559fa0  
    590590        list_foreach_safe(parts->list, cur_link, next) {
    591591                mbr_part_t *p = list_get_instance(cur_link, mbr_part_t, link);
     592                list_remove(cur_link);
    592593                mbr_free_partition(p);
    593594        }
Note: See TracChangeset for help on using the changeset viewer.