Re: [ 35/48] dummy: fix rcu_sched self-detected stalls
From: Herton Ronaldo Krzesinski <hidden>
Date: 2012-07-09 23:39:10
Also in:
lkml
On Mon, Jul 09, 2012 at 03:31:51PM +0100, Ben Hutchings wrote:
quoted hunk ↗ jump to hunk
3.2-stable review patch. If anyone has any objections, please let me know. ------------------ From: Eric Dumazet <edumazet@google.com> [ Upstream commit 16b0dc29c1af9df341428f4c49ada4f626258082 ] Trying to "modprobe dummy numdummies=30000" triggers : INFO: rcu_sched self-detected stall on CPU { 8} (t=60000 jiffies) After this splat, RTNL is locked and reboot is needed. We must call cond_resched() to avoid this, even holding RTNL. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Ben Hutchings <redacted> --- drivers/net/dummy.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c index eeac9ca..87e4632 100644 --- a/drivers/net/dummy.c +++ b/drivers/net/dummy.c@@ -186,8 +186,10 @@ static int __init dummy_init_module(void) rtnl_lock(); err = __rtnl_link_register(&dummy_link_ops); - for (i = 0; i < numdummies && !err; i++) + for (i = 0; i < numdummies && !err; i++) { err = dummy_init_one(); + cond_resched(); + }
Hi, I got the following build error with this applied to 3.2, on i386 and arm builds: linux-stable/drivers/net/dummy.c: In function 'dummy_init_module': linux-stable/drivers/net/dummy.c:191:3: error: implicit declaration of function 'cond_resched' [-Werror=implicit-function-declaration] This doesn't happen on mainline so far. Looking here on mainline, sched.h is implicitly included through <linux/netdevice.h> -> <net/netprio_cgroup.h> -> <linux/cgroup.h> -> <linux/sched.h> But on 3.2 this doesn't happen, and build fails on i386 and arm. On x86_64 it works though since sched.h is pulled from netdevice.h -> ethtool.h -> compat.h if CONFIG_COMPAT is enabled. May be the best solution is for the patch backported to 3.2, to include <linux/sched.h> also.
if (err < 0) __rtnl_link_unregister(&dummy_link_ops); rtnl_unlock(); -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
-- []'s Herton