Skip to content

Commit a0fb07d

Browse files
committed
freebsd: Don't panic if can't ioctl ESRT
Signed-off-by: Daniel Schaefer <[email protected]>
1 parent de8e059 commit a0fb07d

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

framework_lib/src/esrt/mod.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,11 +417,12 @@ ioctl_readwrite!(efi_get_table, b'E', 1, EfiGetTableIoc);
417417

418418
#[cfg(all(not(feature = "uefi"), target_os = "freebsd"))]
419419
pub fn get_esrt() -> Option<Esrt> {
420+
let path = "/dev/efi";
420421
let file = OpenOptions::new()
421422
.read(true)
422423
.write(true)
423424
.custom_flags(libc::O_NONBLOCK)
424-
.open("/dev/efi")
425+
.open(path)
425426
.unwrap();
426427

427428
let mut buf: Vec<u8> = Vec::new();
@@ -433,7 +434,10 @@ pub fn get_esrt() -> Option<Esrt> {
433434
};
434435
unsafe {
435436
let fd = file.as_raw_fd();
436-
let _res = efi_get_table(fd, &mut table).unwrap();
437+
if let Err(err) = efi_get_table(fd, &mut table) {
438+
error!("Failed to access ESRT at {}: {:?}", path, err);
439+
return None;
440+
}
437441
buf.resize(table.table_len, 0);
438442
table.buf_len = table.table_len;
439443
table.buf = buf.as_mut_ptr();

0 commit comments

Comments
 (0)