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 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]