lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 19 Jul 2011 15:41:42 -0700
From:	"Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>
To:	kernelmail.jms@...il.com, kulkarni.ravi4@...il.com
Cc:	linux-kernel@...r.kernel.org, cmm@...ibm.com
Subject: Fw: RCU boot debug patch

Hello, Julie and Ravi,

Although we arrived at a patch that worked for both of you, we never did
identify exactly which RCU callback (or other issue) that was causing
the problem.  It would be good to do this in case there is some other
problem lurking that might bite us in the future.  Mingming has therefore
put together the following diagnostic patch which should identify the
callbacks, please see below.

So could you please run this and let us know what you find?  There should
at least be a message for artificial_callback().

							Thanx, Paul

------------------------------------------------------------------------

A debug patch to verify if there is RCU callbacks before the rcu scheduler is active. Please looking
at the dmesg to see if any message print out related to this other than the artificial one.

Signed_off_by: Mingming Cao <cmm@...ibm.com>
diff --git a/init/main.c b/init/main.c
index d7211fa..2abc1a5 100644
--- a/init/main.c
+++ b/init/main.c
@@ -452,11 +452,13 @@ static void __init mm_init(void)
 	pgtable_cache_init();
 	vmalloc_init();
 }
+static void artificial_callback(struct rcu_head *p) {};

 asmlinkage void __init start_kernel(void)
 {
 	char * command_line;
 	extern const struct kernel_param __start___param[], __stop___param[];
+	static struct rcu_head artificial_rcu_head;

 	smp_setup_processor_id();

@@ -531,6 +533,7 @@ asmlinkage void __init start_kernel(void)
 	idr_init_cache();
 	perf_event_init();
 	rcu_init();
+	call_rcu(&artificial_rcu_head, artificial_callback);	
 	radix_tree_init();
 	/* init some links before init_ISA_irqs() */
 	early_irq_init();
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index ba06207..60ca927 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1514,6 +1514,11 @@ __call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu),
 	head->func = func;
 	head->next = NULL;

+	if ((system_state == SYSTEM_BOOTING) && (!rcu_scheduler_active))
+		printk(KERN_ALERT "RCU scheduler is not active yet, "
+		        "Calling _call_rcu() with this function %pf\n",
+			func);
+
 	smp_mb(); /* Ensure RCU update seen before callback registry. */

 	/*



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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ