All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <greg@kroah.com>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
	Zwane Mwaikambo <zwane@arm.linux.org.uk>,
	"Theodore Ts'o" <tytso@mit.edu>,
	Randy Dunlap <rdunlap@xenotime.net>,
	Dave Jones <davej@redhat.com>,
	Chuck Wolber <chuckw@quantumlinux.com>,
	Chris Wedgwood <reviews@ml.cw.f00f.org>,
	Michael Krufky <mkrufky@linuxtv.org>,
	torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk, Jeff Garzik <jeff@garzik.org>,
	Ingo Molnar <mingo@elte.hu>, Chuck Ebbert <cebbert@redhat.com>,
	Linus Torvalds <torvalds@osdl.org>
Subject: [patch 19/21] net, 8139too.c: fix netpoll deadlock
Date: Tue, 20 Feb 2007 17:38:46 -0800	[thread overview]
Message-ID: <20070221013846.GT30227@kroah.com> (raw)
In-Reply-To: <20070221013619.GA30227@kroah.com>

[-- Attachment #1: net-8139too.c-fix-netpoll-deadlock.patch --]
[-- Type: text/plain, Size: 3364 bytes --]

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Ingo Molnar <mingo@elte.hu>

[PATCH] net, 8139too.c: fix netpoll deadlock

fix deadlock in the 8139too driver: poll handlers should never forcibly
enable local interrupts, because they might be used by netpoll/printk
from IRQ context.

  =================================
  [ INFO: inconsistent lock state ]
  2.6.19 #11
  ---------------------------------
  inconsistent {softirq-on-W} -> {in-softirq-W} usage.
  swapper/1 [HC0[0]:SC1[1]:HE1:SE0] takes:
   (&npinfo->poll_lock){-+..}, at: [<c0350a41>] net_rx_action+0x64/0x1de
  {softirq-on-W} state was registered at:
    [<c0134c86>] mark_lock+0x5b/0x39c
    [<c0135012>] mark_held_locks+0x4b/0x68
    [<c01351e9>] trace_hardirqs_on+0x115/0x139
    [<c02879e6>] rtl8139_poll+0x3d7/0x3f4
    [<c035c85d>] netpoll_poll+0x82/0x32f
    [<c035c775>] netpoll_send_skb+0xc9/0x12f
    [<c035cdcc>] netpoll_send_udp+0x253/0x25b
    [<c0288463>] write_msg+0x40/0x65
    [<c011cead>] __call_console_drivers+0x45/0x51
    [<c011cf16>] _call_console_drivers+0x5d/0x61
    [<c011d4fb>] release_console_sem+0x11f/0x1d8
    [<c011d7d7>] register_console+0x1ac/0x1b3
    [<c02883f8>] init_netconsole+0x55/0x67
    [<c010040c>] init+0x9a/0x24e
    [<c01049cf>] kernel_thread_helper+0x7/0x10
    [<ffffffff>] 0xffffffff
  irq event stamp: 819992
  hardirqs last  enabled at (819992): [<c0350a16>] net_rx_action+0x39/0x1de
  hardirqs last disabled at (819991): [<c0350b1e>] net_rx_action+0x141/0x1de
  softirqs last  enabled at (817552): [<c01214e4>] __do_softirq+0xa3/0xa8
  softirqs last disabled at (819987): [<c0106051>] do_softirq+0x5b/0xc9

  other info that might help us debug this:
  no locks held by swapper/1.

  stack backtrace:
   [<c0104d88>] dump_trace+0x63/0x1e8
   [<c0104f26>] show_trace_log_lvl+0x19/0x2e
   [<c010532d>] show_trace+0x12/0x14
   [<c0105343>] dump_stack+0x14/0x16
   [<c0134980>] print_usage_bug+0x23c/0x246
   [<c0134d33>] mark_lock+0x108/0x39c
   [<c01356a7>] __lock_acquire+0x361/0x9ed
   [<c0136018>] lock_acquire+0x56/0x72
   [<c03aff1f>] _spin_lock+0x35/0x42
   [<c0350a41>] net_rx_action+0x64/0x1de
   [<c0121493>] __do_softirq+0x52/0xa8
   [<c0106051>] do_softirq+0x5b/0xc9
   [<c0121338>] irq_exit+0x3c/0x48
   [<c0106163>] do_IRQ+0xa4/0xbd
   [<c01047c6>] common_interrupt+0x2e/0x34
   [<c011db92>] vprintk+0x2c0/0x309
   [<c011dbf6>] printk+0x1b/0x1d
   [<c01003f2>] init+0x80/0x24e
   [<c01049cf>] kernel_thread_helper+0x7/0x10
   =======================

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Jeff Garzik <jeff@garzik.org>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/net/8139too.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--- linux-2.6.19.4.orig/drivers/net/8139too.c
+++ linux-2.6.19.4/drivers/net/8139too.c
@@ -2129,14 +2129,15 @@ static int rtl8139_poll(struct net_devic
 	}
 
 	if (done) {
+		unsigned long flags;
 		/*
 		 * Order is important since data can get interrupted
 		 * again when we think we are done.
 		 */
-		local_irq_disable();
+		local_irq_save(flags);
 		RTL_W16_F(IntrMask, rtl8139_intr_mask);
 		__netif_rx_complete(dev);
-		local_irq_enable();
+		local_irq_restore(flags);
 	}
 	spin_unlock(&tp->rx_lock);
 

--

  parent reply	other threads:[~2007-02-21  1:40 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20070221012758.925122216@mini.kroah.org>
2007-02-21  1:36 ` [patch 00/21] 2.6.19-stable review Greg KH
2007-02-21  1:36   ` [patch 01/21] V4L: cx88: Fix lockup on suspend Greg KH
2007-02-22  1:00     ` Chuck Ebbert
2007-02-22  1:14       ` Michael Krufky
2007-02-21  1:36   ` [patch 02/21] V4L: Fix quickcam communicator driver for big endian architectures Greg KH
2007-02-21  1:36   ` [patch 03/21] V4L: fix ks0127 status flags Greg KH
2007-02-21  1:36   ` [patch 04/21] V4L: tveeprom: autodetect LG TAPC G701D as tuner type 37 Greg KH
2007-02-21  1:37   ` [patch 05/21] V4L: buf_qbuf: fix videobuf_queue->stream corruption and lockup Greg KH
2007-02-21  1:37   ` [patch 06/21] net/smc911x: match up spin lock/unlock Greg KH
2007-02-21  1:37   ` [patch 07/21] rtc-pcf8563: detect polarity of century bit automatically Greg KH
2007-02-21  1:37   ` [patch 08/21] aio: fix buggy put_ioctx call in aio_complete - v2 Greg KH
2007-02-21  1:37   ` [uml-devel] [patch 09/21] x86_64: fix 2.6.18 regression - PTRACE_OLDSETOPTIONS should be accepted Greg KH
2007-02-21  1:37     ` Greg KH
2007-02-21  1:37   ` [patch 10/21] ide: fix drive side 80c cable check Greg KH
2007-02-21  1:37   ` [patch 11/21] pata_amd: fix an obvious bug in cable detection Greg KH
2007-02-21  1:37   ` [patch 12/21] bcm43xx: Fix for oops on resume Greg KH
2007-02-21  1:38   ` [patch 13/21] bcm43xx: Fix for oops on ampdu status Greg KH
2007-02-21  1:38   ` [patch 14/21] usb-audio: work around wrong frequency in CM6501 descriptors Greg KH
2007-02-21  1:38   ` [patch 15/21] usbaudio - Fix Oops with broken usb descriptors Greg KH
2007-02-21  1:38   ` [patch 16/21] usbaudio - Fix Oops with unconventional sample rates Greg KH
2007-02-21  1:38   ` [patch 17/21] Use different constraint for gcc < 4.1 in bitops Greg KH
2007-02-21  1:38   ` [patch 18/21] prism54: correct assignment of DOT1XENABLE in WE-19 codepaths Greg KH
2007-02-21  1:38   ` Greg KH [this message]
2007-02-21  1:38   ` [patch 20/21] Keys: Fix key serial number collision handling Greg KH
2007-02-21  1:39   ` [patch 21/21] knfsd: Fix a race in closing NFSd connections Greg KH
2007-02-21  1:39     ` Greg KH
2007-02-21 13:36   ` [patch 00/21] 2.6.19-stable review Stefan Richter
2007-02-21 13:37     ` Stefan Richter
2007-03-09  5:35     ` Adrian Bunk
2007-02-21 16:38   ` Chuck Ebbert
2007-02-21 16:50   ` Chuck Ebbert
2007-02-21 19:31   ` Chuck Ebbert
2007-02-21 19:47     ` Andrew Morton
2007-02-21 20:09       ` Linus Torvalds
2007-02-21 22:45         ` Eric W. Biederman
2007-02-28  6:37         ` Eric W. Biederman
2007-02-28  8:51           ` Zwane Mwaikambo
2007-02-28 12:28             ` Eric W. Biederman
2007-02-28 19:52               ` [stable] " Greg KH
2007-02-28 23:25                 ` Eric W. Biederman
2007-02-21 20:13       ` Eric W. Biederman
2007-02-21 20:21         ` Chuck Ebbert
2007-02-21 22:19         ` Andi Kleen
2007-02-21 22:20       ` Andi Kleen
2007-02-21 22:39         ` Chuck Ebbert
2007-02-22  1:19           ` Andi Kleen
2007-02-21 20:39     ` Greg KH
2007-02-21 20:44       ` Chuck Ebbert
2007-02-21 22:33   ` Chuck Ebbert
2007-02-21 22:35     ` Chuck Ebbert
2007-02-21 22:43   ` Chuck Ebbert
2007-02-22 16:09   ` Chuck Ebbert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070221013846.GT30227@kroah.com \
    --to=greg@kroah.com \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=cebbert@redhat.com \
    --cc=chuckw@quantumlinux.com \
    --cc=davej@redhat.com \
    --cc=jeff@garzik.org \
    --cc=jmforbes@linuxtx.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mkrufky@linuxtv.org \
    --cc=rdunlap@xenotime.net \
    --cc=reviews@ml.cw.f00f.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=torvalds@osdl.org \
    --cc=tytso@mit.edu \
    --cc=zwane@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.