From: "Rafael J. Wysocki" <rjw@sisk.pl> Date: Wed, 9 Apr 2008 01:02:09 +0200 (CEST)This is already fixed by: commit 50fd4407b8bfbde7c1a0bfe4f24de7df37164342 Author: David S. Miller <davem@davemloft.net> Date: Thu Mar 27 17:42:50 2008 -0700 [NET]: Use local_irq_{save,restore}() in napi_complete(). Based upon a lockdep report. Since ->poll() can be invoked from netpoll with interrupts disabled, we must not unconditionally enable interrupts in napi_complete(). Instead we must use local_irq_{save,restore}(). Noticed by Peter Zijlstra: <irqs disabled> netpoll_poll() poll_napi() spin_trylock(&napi->poll_lock) poll_one_napi() napi->poll() := sky2_poll() napi_complete() local_irq_disable() local_irq_enable() <--- *BUG* <irq> irq_exit() do_softirq() net_rx_action() spin_lock(&napi->poll_lock) <--- Deadlock! Because we still hold the lock.... Signed-off-by: David S. Miller <davem@davemloft.net> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index a2f0032..fae6a7e 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -383,9 +383,11 @@ static inline void __napi_complete(struct napi_struct *n) static inline void napi_complete(struct napi_struct *n) { - local_irq_disable(); + unsigned long flags; + + local_irq_save(flags); __napi_complete(n); - local_irq_enable(); + local_irq_restore(flags); } /** --
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| Yinghai Lu | Re: [GIT *] Allow request_firmware() to be satisfied from in-kernel, use it in mor... |
| Trent Piepho | [PATCH] [POWERPC] Improve (in|out)_beXX() asm code |
| Alan Cox | [PATCH 00/76] Queued TTY Patches |
git: | |
| Junio C Hamano | Re: More precise tag following |
| Yossi Leybovich | corrupt object on git-gc |
| bain | [Announce] teamGit v0.0.3 |
| Aaron Bentley | Re: VCS comparison table |
| Nick Guenther | Re: Real men don't attack straw men |
| Brandon Lee | DELL PERC 5iR slow performance |
| Stefan Beke | mail dovecot: pipe() failed: Too many open files |
| Paul Greidanus | Re: [Fwd: Open-Hardware] |
| David Miller | [GIT]: Networking |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| KOSAKI Motohiro | [bug?] tg3: Failed to load firmware "tigon/tg3_tso.bin" |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
