On Mon, Aug 23, 2010 at 9:17 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > On Mon, 2010-08-23 at 07:48 -0400, Brian Gerst wrote: >> >> Use an exported function pointer in the main kernel as a hook that the >> module sets when it is loaded. Note, you must use module_get and >> module_put around the call to the module to prevent it from unloading >> while in use. > > Please don't do any such thing, its impossible to use correctly. > > Suppose there are two modular users, A and B. > > Both have something like: > > extern void (*fptr)(void); > > static void (*old_fptr)(void); > > static void func(void) > { > /* foo */ > if (old_fptr) > old_fptr(); > } > > module_init() > { > old_fptr = fptr; > fptr = A_func; > } > > Then you load A, load B and unload A, then guess what happens? > The assumption was that there was a single module using that hook. For multiple users you'd need to use a register function that adds the module to a linked list. -- Brian Gerst -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html