Re: Linux 2.4.21-rc3 - ipmi unresolved

Corey Minyard (minyard@acm.org)
Sun, 25 May 2003 22:37:17 -0500


Keith Owens wrote:

>On Fri, 23 May 2003 23:38:53 +1000,
>Eyal Lebedinsky <eyal@eyal.emu.id.au> wrote:
>
>
>>The exports in ksyms are still necessary, and missing:
>>
>>depmod: *** Unresolved symbols in
>>/lib/modules/2.4.21-rc3/kernel/drivers/char/ipmi/ipmi_msghandler.o
>>depmod: panic_notifier_list
>>depmod: *** Unresolved symbols in
>>/lib/modules/2.4.21-rc3/kernel/drivers/char/ipmi/ipmi_watchdog.o
>>depmod: panic_notifier_list
>>depmod: panic_timeout
>>
>>
>
>Danger Will Robinson: panic notification to modules is racy.
>
>Registering via panic_notifier_list does not bump the module use count,
>a panic can occur while a module is being unloaded and you are dead.
>No big deal for panic, you are already dying, but it is just a symptom
>of a larger problem, yet another uncounted reference to module code.
>_ANY_ notifier callback to a module is racy, think very carefully
>before exporting any XXX_notifier_list.
>
>I would go so far as to say that no XXX_notifier_list should be
>exported, that includes notifier_chain_register() itself. If a module
>needs to be notified then it should have glue code in the main kernel
>that does try_inc_mod_count() on the module before calling any module
>functions.
>
Although, as you noted, this one is not a problem, you are probably
right in general.

However, having every modules that uses a notifier list have its own
custom code
in the kernel is probably not a very good option, either. It makes
things messy and
adds unneeded bloat to the kernel.

Would it be possible to have a notifier_chain_register_module() that did
the job
generically? Or maybe if notifier_chain_unregister() did a
synchronize_kernel()
(the RCU call to wait until everything is clear) would that be good
enough? It would
only work if all the notifier chain calls where done while the kernel
was unpreemptable,
if I understand this correctly. I realize the RCU option is not
available in 2.4, though.

-Corey

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