[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/9] block/vpc: Don't abuse the footer buffer as BAT sector buffe
From: |
Markus Armbruster |
Subject: |
[PATCH 2/9] block/vpc: Don't abuse the footer buffer as BAT sector buffer |
Date: |
Thu, 17 Dec 2020 17:19:56 +0100 |
create_dynamic_disk() takes a buffer holding the footer as first
argument. It writes out the footer (512 bytes), then reuses the
buffer to initialize and write out the dynamic header (1024 bytes),
then reuses it again to initialize and write out BAT sectors (512).
Works, because the caller passes a buffer that is large enough for all
three purposes. I hate that.
Use a separate buffer for writing out BAT sectors. The next commit
will do the same for the dynamic header.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
block/vpc.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/block/vpc.c b/block/vpc.c
index 2fcf3f6283..d18ecc3da1 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -824,6 +824,7 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t
*buf,
{
VHDDynDiskHeader *dyndisk_header =
(VHDDynDiskHeader *) buf;
+ uint8_t bat_sector[512];
size_t block_size, num_bat_entries;
int i;
int ret;
@@ -847,9 +848,9 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t
*buf,
/* Write the initial BAT */
offset = 3 * 512;
- memset(buf, 0xFF, 512);
+ memset(bat_sector, 0xFF, 512);
for (i = 0; i < DIV_ROUND_UP(num_bat_entries * 4, 512); i++) {
- ret = blk_pwrite(blk, offset, buf, 512, 0);
+ ret = blk_pwrite(blk, offset, bat_sector, 512, 0);
if (ret < 0) {
goto fail;
}
--
2.26.2
- [PATCH 0/9] block/vpc: Clean up some buffer abuse, Markus Armbruster, 2020/12/17
- [PATCH 1/9] block/vpc: Make vpc_open() read the full dynamic header, Markus Armbruster, 2020/12/17
- [PATCH 3/9] block/vpc: Don't abuse the footer buffer for dynamic header, Markus Armbruster, 2020/12/17
- [PATCH 2/9] block/vpc: Don't abuse the footer buffer as BAT sector buffer,
Markus Armbruster <=
- [PATCH 4/9] block/vpc: Make vpc_checksum() take void *, Markus Armbruster, 2020/12/17
- [PATCH 8/9] block/vpc: Pass footer buffers as VHDFooter * instead of uint8_t *, Markus Armbruster, 2020/12/17
- [PATCH 9/9] block/vpc: Use sizeof() instead of HEADER_SIZE for footer size, Markus Armbruster, 2020/12/17
- [PATCH 5/9] block/vpc: Pad VHDDynDiskHeader, replace uint8_t[] buffers, Markus Armbruster, 2020/12/17