I believe I see the race Michael refers to (tlb_choose_channel
may set head, which tlb_init_slave clears), although I was not able to
reproduce it. I have updated his patch for the current netdev-2.6.git
tree and added a version update. His original comment follows:
Our systems have been crashing during testing of PCI HotPlug
support in the various networking components. We've faulted in
the bonding driver due to a bug in bond_alb.c:tlb_clear_slave()
In that routine, the last modification to the TLB hash table is
made without protection of the lock, allowing a race that can lead
tlb_choose_channel() to select an invalid table element.
-J
---
-Jay Vosburgh, IBM Linux Technology Center, [EMAIL PROTECTED]
Signed-off-by: Michael O'Donnell <Michael.ODonnell at stratus dot com>
Signed-off-by: Jay Vosburgh <[EMAIL PROTECTED]>
--- netdev-2.6.git-upstream/drivers/net/bonding/bond_alb.c 2006/01/07
00:26:11 1.1
+++ netdev-2.6.git-upstream/drivers/net/bonding/bond_alb.c 2006/01/09
19:55:12
@@ -169,9 +169,9 @@
index = next_index;
}
- _unlock_tx_hashtbl(bond);
-
tlb_init_slave(slave);
+
+ _unlock_tx_hashtbl(bond);
}
/* Must be called before starting the monitor timer */
--- netdev-2.6.git-upstream/drivers/net/bonding/bonding.h 2006/01/07
00:26:11 1.1
+++ netdev-2.6.git-upstream/drivers/net/bonding/bonding.h 2006/01/09
19:55:42
@@ -22,8 +22,8 @@
#include "bond_3ad.h"
#include "bond_alb.h"
-#define DRV_VERSION "3.0.0"
-#define DRV_RELDATE "November 8, 2005"
+#define DRV_VERSION "3.0.1"
+#define DRV_RELDATE "January 9, 2006"
#define DRV_NAME "bonding"
#define DRV_DESCRIPTION "Ethernet Channel Bonding Driver"
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html