All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch 1/2] show being-loaded/being-unloaded indicator for modules in oopses
@ 2008-01-06 23:18 Arjan van de Ven
  2008-01-07  1:25 ` Rusty Russell
  0 siblings, 1 reply; 2+ messages in thread
From: Arjan van de Ven @ 2008-01-06 23:18 UTC (permalink / raw)
  To: linux-kernel; +Cc: rusty, ak, mingo

Subject: show being-loaded/being-unloaded indicator for modules in oopses
From: Arjan van de Ven <arjan@linux.intel.com>
CC: rusty@rustcorp.com.au
CC: ak@suse.de
CC: mingo@elte.hu

It's rather common that an oops/WARN_ON/BUG happens during the load or
unload of a module. Unfortunatly, it's not always easy to see directly
which module is being loaded/unloaded from the oops itself. Worse,
it's not even always possible to ask the bug reporter, since there
are so many components (udev etc) that auto-load modules that there's
a good chance that even the reporter doesn't know which module this is.

This patch extends the existing "show if it's tainting" print code,
which is used as part of printing the modules in the oops/BUG/WARN_ON
to include a "+" for "being loaded" and a "-" for "being unloaded".

As a result this extension, the "taint_flags()" function gets renamed to
"module_flags()" (and takes a module struct as argument, not a taint
flags int).

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>

---
 kernel/module.c |   21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

Index: linux-2.6.24-rc6/kernel/module.c
===================================================================
--- linux-2.6.24-rc6.orig/kernel/module.c
+++ linux-2.6.24-rc6/kernel/module.c
@@ -2355,21 +2355,30 @@ static void m_stop(struct seq_file *m, v
 	mutex_unlock(&module_mutex);
 }
 
-static char *taint_flags(unsigned int taints, char *buf)
+static char *module_flags(struct module *mod, char *buf)
 {
 	int bx = 0;
 
-	if (taints) {
+	if (mod->taints ||
+	    mod->state == MODULE_STATE_GOING ||
+	    mod->state == MODULE_STATE_COMING) {
 		buf[bx++] = '(';
-		if (taints & TAINT_PROPRIETARY_MODULE)
+		if (mod->taints & TAINT_PROPRIETARY_MODULE)
 			buf[bx++] = 'P';
-		if (taints & TAINT_FORCED_MODULE)
+		if (mod->taints & TAINT_FORCED_MODULE)
 			buf[bx++] = 'F';
 		/*
 		 * TAINT_FORCED_RMMOD: could be added.
 		 * TAINT_UNSAFE_SMP, TAINT_MACHINE_CHECK, TAINT_BAD_PAGE don't
 		 * apply to modules.
 		 */
+
+		/* Show a - for module-is-being-unloaded */
+		if (mod->state == MODULE_STATE_GOING)
+			buf[bx++] = '-';
+		/* Show a + for module-is-being-loaded */
+		if (mod->state == MODULE_STATE_COMING)
+			buf[bx++] = '+';
 		buf[bx++] = ')';
 	}
 	buf[bx] = '\0';
@@ -2396,7 +2405,7 @@ static int m_show(struct seq_file *m, vo
 
 	/* Taints info */
 	if (mod->taints)
-		seq_printf(m, " %s", taint_flags(mod->taints, buf));
+		seq_printf(m, " %s", module_flags(mod, buf));
 
 	seq_printf(m, "\n");
 	return 0;
@@ -2491,7 +2500,7 @@ void print_modules(void)
 
 	printk("Modules linked in:");
 	list_for_each_entry(mod, &modules, list)
-		printk(" %s%s", mod->name, taint_flags(mod->taints, buf));
+		printk(" %s%s", mod->name, module_flags(mod, buf));
 	printk("\n");
 }
 


-- 
If you want to reach me at my work email, use arjan@linux.intel.com
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [patch 1/2] show being-loaded/being-unloaded indicator for modules in oopses
  2008-01-06 23:18 [patch 1/2] show being-loaded/being-unloaded indicator for modules in oopses Arjan van de Ven
@ 2008-01-07  1:25 ` Rusty Russell
  0 siblings, 0 replies; 2+ messages in thread
From: Rusty Russell @ 2008-01-07  1:25 UTC (permalink / raw)
  To: Arjan van de Ven; +Cc: linux-kernel, ak, mingo

On Monday 07 January 2008 10:18:50 Arjan van de Ven wrote:
> Subject: show being-loaded/being-unloaded indicator for modules in oopses
> From: Arjan van de Ven <arjan@linux.intel.com>
> CC: rusty@rustcorp.com.au
> CC: ak@suse.de
> CC: mingo@elte.hu
>
> It's rather common that an oops/WARN_ON/BUG happens during the load or
> unload of a module. Unfortunatly, it's not always easy to see directly
> which module is being loaded/unloaded from the oops itself. Worse,
> it's not even always possible to ask the bug reporter, since there
> are so many components (udev etc) that auto-load modules that there's
> a good chance that even the reporter doesn't know which module this is.

Excellent, applied.

Thanks Arjan!
Rusty.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-01-07  1:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-06 23:18 [patch 1/2] show being-loaded/being-unloaded indicator for modules in oopses Arjan van de Ven
2008-01-07  1:25 ` Rusty Russell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.