From 79f23820ea388adb4411857b7ee6f145cb8d5e28 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Sat, 26 May 2018 20:23:03 +0000 Subject: [PATCH 1/2] Fixes #18 -- call the kerne's BUG macro when we panic --- src/helpers.c | 8 +++++++- src/lib.rs | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/helpers.c b/src/helpers.c index 9fe5cdba..e3d8289c 100644 --- a/src/helpers.c +++ b/src/helpers.c @@ -1,6 +1,12 @@ +#include #include int printk_helper(const unsigned char *s, int len) { - return printk(KERN_INFO "%.*s", len, (const char *)s); + return printk(KERN_INFO "%.*s", len, (const char *)s); +} + +void bug_helper(void) +{ + BUG(); } diff --git a/src/lib.rs b/src/lib.rs index d71e0d5d..02bfe1a3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -64,12 +64,18 @@ pub trait KernelModule: Sized { fn init() -> KernelResult; } +extern "C" { + fn bug_helper() -> !; +} + #[lang = "eh_personality"] extern "C" fn eh_personality() {} #[lang = "panic_fmt"] extern "C" fn panic_fmt() -> ! { - loop {} + unsafe { + bug_helper(); + } } #[global_allocator] From 8e7bc4c4567cc0fc1113a08921936b769ae43ebd Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Sun, 27 May 2018 12:00:08 +0000 Subject: [PATCH 2/2] Show dmesg in travis on failure to enable debugging --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index b97bd676..d1bf4d37 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,9 +31,12 @@ script: - cd $MODULE_DIR - RUST_TARGET_PATH="$(pwd)/.." cargo xbuild --target x86_64-linux-kernel-module - make + - sudo dmesg -C - sudo insmod "${MODULE}.ko" - sudo rmmod "$MODULE" +after_failure: + - dmesg notifications: email: false