Re: help needed with EXPORT_SYMBOL

From: Peter Zijlstra
Date: Mon Aug 23 2010 - 09:18:10 EST


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?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/