Skip to content

Commit 6c9fba5

Browse files
committed
Do not assume program header is sorted by VA
Do not assume program header is sorted ascendantly by virtual address, otherwise loader_result.kernel_end may be wrong. Signed-off-by: Liu Jiang <[email protected]>
1 parent dc38cc8 commit 6c9fba5

File tree

3 files changed

+4
-3
lines changed

3 files changed

+4
-3
lines changed

coverage_config_aarch64.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"coverage_score": 70.9,
2+
"coverage_score": 71.4,
33
"exclude_path": "",
44
"crate_features": ""
55
}

coverage_config_x86_64.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"coverage_score": 76.3,
2+
"coverage_score": 76.4,
33
"exclude_path": "",
44
"crate_features": ""
55
}

src/loader/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,10 +293,11 @@ impl KernelLoader for Elf {
293293
.read_exact_from(mem_offset, kernel_image, phdr.p_filesz as usize)
294294
.map_err(|_| Error::ReadKernelImage)?;
295295

296-
loader_result.kernel_end = mem_offset
296+
let kernel_end = mem_offset
297297
.raw_value()
298298
.checked_add(phdr.p_memsz as GuestUsize)
299299
.ok_or(Error::MemoryOverflow)?;
300+
loader_result.kernel_end = std::cmp::max(loader_result.kernel_end, kernel_end);
300301
}
301302

302303
// elf image has no setup_header which is defined for bzImage

0 commit comments

Comments
 (0)