The code in modevent_nop always returns EBUSY when one tries to unload a module. This doesn't necessarily make sense because it effectively wires the module into the kernel until it's rebooted, making it difficult for developers/testers/users to swap out kernel modules as need be: 68 static int 69 modevent_nop(module_t mod, int what, void *arg) 70 { 71 72 switch(what) { 73 case MOD_LOAD: 74 return (0); 75 case MOD_UNLOAD: 76 return (EBUSY); 77 default: 78 return (EOPNOTSUPP); 79 } 80 } It would make more sense if it returned 0 when MOD_LOAD/MOD_UNLOAD events are passed through, like it used to before r132167, but this requires additional discussion.