lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 8 Mar 2007 13:31:13 -0800 (PST) From: Chris Stromsoe <cbs@....ucla.edu> To: Stephen Hemminger <shemminger@...ux-foundation.org> cc: netdev@...r.kernel.org Subject: Re: skge- "soft lockup on CPU#0" with mtu=9000 (2.6.20.1 + web100 patch) Thanks. That fixes the soft lockup. I've got another problem now. The cards I'm using are dual port (sk-9844). I am bonding both ports together. The card presents as eth2 and eth3. If I remove eth2 from the bond so that eth3 is the active interface, I get a hard lock (nothing prints to serial console, sysrq isn't responsive) and have to power cycle. This is with plain 2.6.20.1. I also tested using skge.[ch] from the current netdev git tree. -Chris On Thu, 8 Mar 2007, Stephen Hemminger wrote: > > [SKGE]: Fix deadlock in skge_tx_timeout > > dev_watchdog() already holds the device lock, don't take it again in > skge_tx_clean(). > > Signed-off-by: Patrick McHardy <kaber@...sh.net> > > --- > commit 0b1cfafa6f6b8a168d5811d1f65cf540942c52b1 > tree 4d3f252d6618adfe812e9da95cd496bb798e7c7b > parent 1ca949299260aa49eeba34ff912e2321c8b1f647 > author Patrick McHardy <kaber@...sh.net> Sat, 24 Feb 2007 20:05:39 +0100 > committer Patrick McHardy <kaber@...sh.net> Sat, 24 Feb 2007 20:05:39 +0100 > > drivers/net/skge.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/skge.c b/drivers/net/skge.c > index e482e7f..4a948c2 100644 > --- a/drivers/net/skge.c > +++ b/drivers/net/skge.c > @@ -2575,7 +2575,9 @@ static int skge_down(struct net_device * > skge_led(skge, LED_MODE_OFF); > > netif_poll_disable(dev); > + netif_tx_lock_bh(dev); > skge_tx_clean(dev); > + netif_tx_unlock_bh(dev); > skge_rx_clean(skge); > > kfree(skge->rx_ring.start); > @@ -2720,7 +2722,6 @@ static void skge_tx_clean(struct net_dev > struct skge_port *skge = netdev_priv(dev); > struct skge_element *e; > > - netif_tx_lock_bh(dev); > for (e = skge->tx_ring.to_clean; e != skge->tx_ring.to_use; e = e->next) { > struct skge_tx_desc *td = e->desc; > skge_tx_free(skge, e, td->control); > @@ -2729,7 +2730,6 @@ static void skge_tx_clean(struct net_dev > > skge->tx_ring.to_clean = e; > netif_wake_queue(dev); > - netif_tx_unlock_bh(dev); > } > > static void skge_tx_timeout(struct net_device *dev) > > > --------------010402080104080400040104-- > - > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@...r.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists