From patchwork Sat Oct 16 05:22:34 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Dumazet X-Patchwork-Id: 68024 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 0D7AAB70E5 for ; Sat, 16 Oct 2010 16:31:51 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751989Ab0JPFWm (ORCPT ); Sat, 16 Oct 2010 01:22:42 -0400 Received: from mail-ww0-f44.google.com ([74.125.82.44]:47445 "EHLO mail-ww0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751891Ab0JPFWl (ORCPT ); Sat, 16 Oct 2010 01:22:41 -0400 Received: by wwj40 with SMTP id 40so1857945wwj.1 for ; Fri, 15 Oct 2010 22:22:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:subject:from:to:cc :content-type:date:message-id:mime-version:x-mailer :content-transfer-encoding; bh=L5KdulFnYFkxpadyLnoD6Xjp0Fc6XPj89WxotpDLuzo=; b=twtWi8i0Ic3RIk0e/IXAjZNAoJeDNneh5YjJK19WXsXft0IvrQNUy9qG6uTLFzs7Mp g2F8+nDOfmUpeqDPSICGiJ7eY3e/jpsw5raP+gO5+qXU5iIpeCJJeoRUDGH+9+pdCL1/ lWSZP0FXvzHAmodBO5asFrA/v1ndZ++Gw+m7A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=subject:from:to:cc:content-type:date:message-id:mime-version :x-mailer:content-transfer-encoding; b=luw+A3nI0Hwbjnkg+D0MDAjVnY61/Sd3o6RxSrHWVyC6i1wKFFy/erW0+3HvKcrE7u J9iLI6YU8LT5afyS/qei9HYYq2N7qOqz9Fr6vz8MWYtKpSih08m+1TkxVrggVx2c8GsM 1528GbIAjLLcRm8ULJYQ+DYXBUVaW4c/NK2gM= Received: by 10.227.29.204 with SMTP id r12mr1931948wbc.110.1287206560102; Fri, 15 Oct 2010 22:22:40 -0700 (PDT) Received: from [10.150.51.210] (gw0.net.jmsp.net [212.23.165.14]) by mx.google.com with ESMTPS id i19sm8803374wbe.11.2010.10.15.22.22.37 (version=SSLv3 cipher=RC4-MD5); Fri, 15 Oct 2010 22:22:39 -0700 (PDT) Subject: [PATCH net-2.6] net/sched: fix missing spinlock init From: Eric Dumazet To: David Miller Cc: netdev Date: Sat, 16 Oct 2010 07:22:34 +0200 Message-ID: <1287206554.2799.32.camel@edumazet-laptop> Mime-Version: 1.0 X-Mailer: Evolution 2.30.3 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Under network load, doing : tc qdisc del dev eth0 root triggers : [ 167.193087] BUG: spinlock bad magic on CPU#3, udpflood/4928 [ 167.193139] lock: c15bc324, .magic: 00000000, .owner: /-1, .owner_cpu: -1 [ 167.193193] Pid: 4928, comm: udpflood Not tainted 2.6.36-rc7-11417-g215340c-dirty #323 [ 167.193245] Call Trace: [ 167.193292] [] ? printk+0x18/0x20 [ 167.193342] [] spin_bug+0xa3/0xf0 [ 167.193389] [] do_raw_spin_lock+0x7d/0x160 [ 167.193440] [] ? __dev_xmit_skb+0x27e/0x2b0 [ 167.193496] [] ? trace_hardirqs_on+0xb/0x10 [ 167.193545] [] _raw_spin_lock+0x3a/0x40 [ 167.193593] [] ? __dev_xmit_skb+0x27e/0x2b0 [ 167.193641] [] __dev_xmit_skb+0x27e/0x2b0 commit 79640a4ca695 (add additional lock to qdisc to increase throughput) forgot to initialize noop_qdisc and noqueue_qdisc busylock Signed-off-by: Eric Dumazet --- net/sched/sch_generic.c | 2 ++ 1 file changed, 2 insertions(+) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 3d57681..0abcc49 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -383,6 +383,7 @@ struct Qdisc noop_qdisc = { .list = LIST_HEAD_INIT(noop_qdisc.list), .q.lock = __SPIN_LOCK_UNLOCKED(noop_qdisc.q.lock), .dev_queue = &noop_netdev_queue, + .busylock = __SPIN_LOCK_UNLOCKED(noop_qdisc.busylock), }; EXPORT_SYMBOL(noop_qdisc); @@ -409,6 +410,7 @@ static struct Qdisc noqueue_qdisc = { .list = LIST_HEAD_INIT(noqueue_qdisc.list), .q.lock = __SPIN_LOCK_UNLOCKED(noqueue_qdisc.q.lock), .dev_queue = &noqueue_netdev_queue, + .busylock = __SPIN_LOCK_UNLOCKED(noqueue_qdisc.busylock), };