summaryrefslogtreecommitdiff
path: root/src/non_critical/kern_panic
diff options
context:
space:
mode:
Diffstat (limited to 'src/non_critical/kern_panic')
-rw-r--r--src/non_critical/kern_panic/mod.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/non_critical/kern_panic/mod.rs b/src/non_critical/kern_panic/mod.rs
index 4dccc34..d6accd9 100644
--- a/src/non_critical/kern_panic/mod.rs
+++ b/src/non_critical/kern_panic/mod.rs
@@ -13,22 +13,23 @@ pub unsafe fn sysrq_panic() {
}
pub fn kmod_panic() -> Result<(), String> {
- let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap_or_else(|_| "target/debug".into()));
+ let out_dir = PathBuf::from(env::var("OUT_DIR")
+ .map_err(|_| "OUT_DIR environment variable not set".to_string())?);
let ko_file = out_dir.join("linux_kmod.ko");
-
+
if !ko_file.exists() {
return Err(format!("Kernel module not found at: {}", ko_file.display()));
}
-
+
let status = Command::new("insmod")
.arg(&ko_file)
.status()
.map_err(|e| format!("Failed to execute insmod: {}", e))?;
-
+
if !status.success() {
return Err(format!("Failed to load kernel module: exit code {:?}", status.code()));
}
-
+
Ok(())
}