Commit:     a49f99ffca57a2eada23b1ac908a405c17859e35
Parent:     37004af3aaf28f39981754a05cf74361c0834a7a
Author:     Andrew Morton <[EMAIL PROTECTED]>
AuthorDate: Mon Dec 11 17:24:46 2006 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Mon Dec 11 17:24:46 2006 -0800

    [NETPOLL]: Fix local_bh_enable() warning.
    During boot we get:
    netconsole: device eth0 not up yet, forcing it
    e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex
    WARNING (!__warned) at kernel/softirq.c:137 local_bh_enable()
    Call Trace:
     [<ffffffff80235baf>] local_bh_enable+0x41/0xa3
     [<ffffffff8045ab8e>] netpoll_send_skb+0x116/0x144
     [<ffffffff8045b1ee>] netpoll_send_udp+0x263/0x271
     [<ffffffff803d41ec>] write_msg+0x42/0x5e
     [<ffffffff80230c9b>] __call_console_drivers+0x5f/0x70
     [<ffffffff80230d19>] _call_console_drivers+0x6d/0x71
     [<ffffffff802313f0>] release_console_sem+0x148/0x1ec
     [<ffffffff802316ce>] register_console+0x1b1/0x1ba
     [<ffffffff803d4178>] init_netconsole+0x54/0x68
     [<ffffffff802071ae>] init+0x152/0x308
     [<ffffffff804dac8b>] _spin_unlock_irq+0x14/0x30
     [<ffffffff8022c15e>] schedule_tail+0x43/0x9f
     [<ffffffff8020a758>] child_rip+0xa/0x12
    Herbert sayeth:
      Normally networking isn't invoked with interrupts turned off, but I
      suppose we don't have a choice here.  This is unique being a place where 
      can get called with BH on, off, or IRQs off.
      Given that this is only used for printk, the easiest solution is probably
      just to disable local IRQs instead of BH.
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
 net/core/netpoll.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index 156d7fd..a01abdd 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -243,7 +243,9 @@ static void netpoll_send_skb(struct netpoll *np, struct 
sk_buff *skb)
        /* don't get messages out of order, and no recursion */
        if (skb_queue_len(&npinfo->txq) == 0 &&
                    npinfo->poll_owner != smp_processor_id()) {
-               local_bh_disable();     /* Where's netif_tx_trylock_bh()? */
+               unsigned long flags;
+               local_irq_save(flags);
                if (netif_tx_trylock(dev)) {
                        /* try until next clock tick */
                        for (tries = jiffies_to_usecs(1)/USEC_PER_POLL;
@@ -261,7 +263,7 @@ static void netpoll_send_skb(struct netpoll *np, struct 
sk_buff *skb)
-               local_bh_enable();
+               local_irq_restore(flags);
        if (status != NETDEV_TX_OK) {
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to