Re: [patch] revert: [NET]: Fix races in net_rx_action vs netpoll

From: Ingo Molnar
Date: Thu Jul 19 2007 - 15:24:16 EST



* Olaf Kirch <olaf.kirch@xxxxxxxxxx> wrote:

> Here's a somewhat drastic modification that should not change any
> timing, but just verifies whether my patch is to blame at all. Can you
> give it a try?

> @@ -1027,7 +1027,7 @@ static inline void netif_rx_complete(str
> * But at least it doesn't penalize the non-netpoll
> * code path. */
> if (test_bit(__LINK_STATE_POLL_LIST_FROZEN, &dev->state))
> - return;
> + BUG();

ok, i tried the patch below, and it gave this (single) warning:

Calling initcall 0xc02f5c17: init_netconsole+0x0/0x67()
netconsole: device eth0 not up yet, forcing it
netconsole: timeout waiting for carrier
console [netcon0] enabled
WARNING: at include/linux/netdevice.h:1030 netif_rx_complete()
[<c0105e3e>] show_trace_log_lvl+0x19/0x2e
[<c0105f37>] show_trace+0x12/0x14
[<c0105f4d>] dump_stack+0x14/0x16
[<c02c4fef>] e1000_clean+0x1f4/0x26f
[<c03d0f6f>] netpoll_poll+0x8b/0x357
[<c03d0e80>] netpoll_send_skb+0xe8/0x14c
[<c03d1502>] netpoll_send_udp+0x258/0x260
[<c02f5cea>] write_msg+0x53/0x8d
[<c012c5ba>] __call_console_drivers+0x4e/0x5a
[<c012c623>] _call_console_drivers+0x5d/0x61
[<c012cc42>] release_console_sem+0x120/0x1c1
[<c012d446>] register_console+0x22e/0x236
[<c02f5c6c>] init_netconsole+0x55/0x67
[<c05e48e5>] kernel_init+0x154/0x2d9
[<c0105c53>] kernel_thread_helper+0x7/0x10
=======================
e1000: eth0: e1000_watchdog: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
netconsole: network logging started
initcall 0xc02f5c17: init_netconsole+0x0/0x67() returned 0.
initcall 0xc02f5c17 ran for 4012 msecs: init_netconsole+0x0/0x67()
Calling initcall 0xc0600ff9: spi_transport_init+0x0/0x27()
initcall 0xc0600ff9: spi_transport_init+0x0/0x27() returned 0.


Ingo

---
include/linux/netdevice.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-cfs-2.6.23-git.q.prev3/include/linux/netdevice.h
===================================================================
--- linux-cfs-2.6.23-git.q.prev3.orig/include/linux/netdevice.h
+++ linux-cfs-2.6.23-git.q.prev3/include/linux/netdevice.h
@@ -1027,7 +1027,7 @@ static inline void netif_rx_complete(str
* But at least it doesn't penalize the non-netpoll
* code path. */
if (test_bit(__LINK_STATE_POLL_LIST_FROZEN, &dev->state))
- return;
+ WARN_ON(1);
#endif

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