Skip to content

Commit 4c393ac

Browse files
SplittyDevphil-opp
authored andcommitted
Fix spurious panic on some hardware (rust-osdev#29)
Apparently, it is possible that non-usable memory regions overlap each other. This is fixed simply by removing the detection of overlapping non-usable memory and the associated panic. Bump patch version to 0.3.5. The change should be fully backwards-compatible.
1 parent d0715ae commit 4c393ac

File tree

3 files changed

+6
-8
lines changed

3 files changed

+6
-8
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cargo-features = ["publish-lockfile"]
22

33
[package]
44
name = "bootloader"
5-
version = "0.3.4"
5+
version = "0.3.5"
66
authors = ["Philipp Oppermann <[email protected]>"]
77
license = "MIT/Apache-2.0"
88
description = "An experimental pure-Rust x86 bootloader."

src/boot_info.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@ pub(crate) fn create_from(memory_map_addr: VirtAddr, entry_count: u64) -> Memory
1919
let mut iter = memory_map.iter_mut().peekable();
2020
while let Some(region) = iter.next() {
2121
if let Some(next) = iter.peek() {
22-
if region.range.end_frame_number > next.range.start_frame_number {
23-
if region.region_type == MemoryRegionType::Usable {
24-
region.range.end_frame_number = next.range.start_frame_number;
25-
} else {
26-
panic!("two non-usable regions overlap: {:?} {:?}", region, next);
27-
}
22+
if region.range.end_frame_number > next.range.start_frame_number
23+
&& region.region_type == MemoryRegionType::Usable
24+
{
25+
region.range.end_frame_number = next.range.start_frame_number;
2826
}
2927
}
3028
}

0 commit comments

Comments
 (0)