Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 2f591127 in mainline


Ignore:
Timestamp:
2014-01-19T14:35:04Z (8 years ago)
Author:
Maurizio Lombardi <m.lombardi85@…>
Branches:
lfn, master
Children:
5828554
Parents:
a159c6a
Message:

ext4: fix some minor bugs and memory leaks

Location:
uspace
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ext4/libext4_balloc.c

    ra159c6a r2f591127  
    9191        block_t *bitmap_block;
    9292        rc = block_get(&bitmap_block, fs->device, bitmap_block_addr, 0);
    93         if (rc != EOK)
    94                 return rc;
     93        if (rc != EOK) {
     94                ext4_filesystem_put_block_group_ref(bg_ref);
     95                return rc;
     96        }
    9597       
    9698        /* Modify bitmap */
     
    513515                        bitmap_block->dirty = true;
    514516                        rc = block_put(bitmap_block);
    515                         if (rc != EOK)
     517                        if (rc != EOK) {
     518                                ext4_filesystem_put_block_group_ref(bg_ref);
    516519                                return rc;
     520                        }
    517521                       
    518522                        allocated_block =
     
    529533                        bitmap_block->dirty = true;
    530534                        rc = block_put(bitmap_block);
    531                         if (rc != EOK)
     535                        if (rc != EOK) {
     536                                ext4_filesystem_put_block_group_ref(bg_ref);
    532537                                return rc;
     538                        }
    533539                       
    534540                        allocated_block =
     
    600606    bool *free)
    601607{
    602         int rc = EOK;
     608        int rc;
    603609       
    604610        ext4_filesystem_t *fs = inode_ref->fs;
     
    621627        block_t *bitmap_block;
    622628        rc = block_get(&bitmap_block, fs->device, bitmap_block_addr, 0);
    623         if (rc != EOK)
    624                 return rc;
     629        if (rc != EOK) {
     630                ext4_filesystem_put_block_group_ref(bg_ref);
     631                return rc;
     632        }
    625633       
    626634        /* Check if block is free */
  • uspace/lib/ext4/libext4_ialloc.c

    ra159c6a r2f591127  
    204204                        rc = block_get(&bitmap_block, fs->device, bitmap_block_addr,
    205205                            BLOCK_FLAGS_NONE);
    206                         if (rc != EOK)
     206                        if (rc != EOK) {
     207                                ext4_filesystem_put_block_group_ref(bg_ref);
    207208                                return rc;
     209                        }
    208210                       
    209211                        /* Try to allocate i-node in the bitmap */
     
    225227                                        return rc;
    226228
     229                                bgid++;
    227230                                continue;
    228231                        }
     
    232235                       
    233236                        rc = block_put(bitmap_block);
    234                         if (rc != EOK)
     237                        if (rc != EOK) {
     238                                ext4_filesystem_put_block_group_ref(bg_ref);
    235239                                return rc;
     240                        }
    236241                       
    237242                        /* Modify filesystem counters */
  • uspace/srv/fs/ext4fs/ext4fs_ops.c

    ra159c6a r2f591127  
    14031403        }
    14041404       
    1405         if (flags == BLOCK_FLAGS_NOREAD)
     1405        if (flags == BLOCK_FLAGS_NOREAD) {
    14061406                memset(write_block->data, 0, block_size);
     1407                write_block->dirty = true;
     1408        }
    14071409
    14081410        rc = async_data_write_finalize(callid, write_block->data +
    14091411            (pos % block_size), bytes);
    1410         if (rc != EOK)
     1412        if (rc != EOK) {
     1413                block_put(write_block);
    14111414                goto exit;
    1412 
    1413         write_block->dirty = true;
    1414        
     1415        }
     1416
    14151417        rc = block_put(write_block);
    14161418        if (rc != EOK)
Note: See TracChangeset for help on using the changeset viewer.