Bug 192257

Summary: modevent_nop always returns EBUSY on MOD_UNLOAD; blocks user from being able to unload modules with evhand = NULL
Product: Base System Reporter: Enji Cooper <ngie>
Component: kernAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Some People CC: phk
Priority: ---    
Version: CURRENT   
Hardware: Any   
OS: Any   

Description Enji Cooper freebsd_committer 2014-07-29 23:18:07 UTC
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 {
 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.