hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
u-boot/common/image-sparse.c
....@@ -56,10 +56,10 @@
5656 lbaint_t blk;
5757 lbaint_t blkcnt;
5858 lbaint_t blks;
59
- uint32_t bytes_written = 0;
59
+ uint64_t bytes_written = 0;
6060 unsigned int chunk;
6161 unsigned int offset;
62
- unsigned int chunk_data_sz;
62
+ uint64_t chunk_data_sz;
6363 uint32_t *fill_buf = NULL;
6464 uint32_t fill_val;
6565 sparse_header_t *sparse_header;
....@@ -130,8 +130,8 @@
130130 sizeof(chunk_header_t));
131131 }
132132
133
- chunk_data_sz = sparse_header->blk_sz * chunk_header->chunk_sz;
134
- blkcnt = chunk_data_sz / info->blksz;
133
+ chunk_data_sz = ((u64)sparse_header->blk_sz) * chunk_header->chunk_sz;
134
+ blkcnt = DIV_ROUND_UP_ULL(chunk_data_sz, info->blksz);
135135 switch (chunk_header->chunk_type) {
136136 case CHUNK_TYPE_RAW:
137137 if (chunk_header->total_sz !=
....@@ -161,7 +161,7 @@
161161 return;
162162 }
163163 blk += blks;
164
- bytes_written += blkcnt * info->blksz;
164
+ bytes_written += ((u64)blkcnt) * info->blksz;
165165 total_blocks += chunk_header->chunk_sz;
166166 data += chunk_data_sz;
167167 break;
....@@ -222,8 +222,9 @@
222222 blk += blks;
223223 i += j;
224224 }
225
- bytes_written += blkcnt * info->blksz;
226
- total_blocks += chunk_data_sz / sparse_header->blk_sz;
225
+ bytes_written += ((u64)blkcnt) * info->blksz;
226
+ total_blocks += DIV_ROUND_UP_ULL(chunk_data_sz,
227
+ sparse_header->blk_sz);
227228 free(fill_buf);
228229 break;
229230
....@@ -253,7 +254,7 @@
253254
254255 debug("Wrote %d blocks, expected to write %d blocks\n",
255256 total_blocks, sparse_header->total_blks);
256
- printf("........ wrote %u bytes to '%s'\n", bytes_written, part_name);
257
+ printf("........ wrote %llu bytes to '%s'\n", bytes_written, part_name);
257258
258259 if (total_blocks != sparse_header->total_blks)
259260 fastboot_fail("sparse image write failure", response);