]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - fs/ext4/ext4_journal.c
ext4: Fix memory leak of journal buffer if block is updated multiple times
[karo-tx-uboot.git] / fs / ext4 / ext4_journal.c
index cf14049c32931465630ab4e3832f3816226c7a15..5a25be4c8ac2c5871929f9c1cf07c0eaf2663b70 100644 (file)
@@ -190,7 +190,11 @@ int ext4fs_put_metadata(char *metadata_buffer, uint32_t blknr)
                printf("Invalid input arguments %s\n", __func__);
                return -EINVAL;
        }
-       dirty_block_ptr[gd_index]->buf = zalloc(fs->blksz);
+       if (dirty_block_ptr[gd_index]->buf)
+               assert(dirty_block_ptr[gd_index]->blknr == blknr);
+       else
+               dirty_block_ptr[gd_index]->buf = zalloc(fs->blksz);
+
        if (!dirty_block_ptr[gd_index]->buf)
                return -ENOMEM;
        memcpy(dirty_block_ptr[gd_index]->buf, metadata_buffer, fs->blksz);