aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/myri10ge
diff options
context:
space:
mode:
authorBrice Goglin <brice@myri.com>2008-05-08 20:19:29 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-05-13 01:30:29 -0400
commiteca3fd83436853483837f010d9c3fefafa46a15c (patch)
treec75d964144f366486ade050f643ec0980203b25f /drivers/net/myri10ge
parent99f5f87eb689c5766fa2c101fe75310a7f9ba3cd (diff)
myri10ge: fix potential infinite loop in enable_ecrc
Fix another potential for an infinite loop while looking for the root port in myri10ge_enable_ecrc(). Signed-off-by: Brice Goglin <brice@myri.com> Signed-off-by: Andrew Gallatin <gallatin@myri.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/myri10ge')
-rw-r--r--drivers/net/myri10ge/myri10ge.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 9165a55f8111..6526214f69d9 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -2657,13 +2657,14 @@ static void myri10ge_enable_ecrc(struct myri10ge_priv *mgp)
2657 ext_type = (val & PCI_EXP_FLAGS_TYPE) >> 4; 2657 ext_type = (val & PCI_EXP_FLAGS_TYPE) >> 4;
2658 if (ext_type != PCI_EXP_TYPE_ROOT_PORT) { 2658 if (ext_type != PCI_EXP_TYPE_ROOT_PORT) {
2659 if (myri10ge_ecrc_enable > 1) { 2659 if (myri10ge_ecrc_enable > 1) {
2660 struct pci_dev *old_bridge = bridge; 2660 struct pci_dev *prev_bridge, *old_bridge = bridge;
2661 2661
2662 /* Walk the hierarchy up to the root port 2662 /* Walk the hierarchy up to the root port
2663 * where ECRC has to be enabled */ 2663 * where ECRC has to be enabled */
2664 do { 2664 do {
2665 prev_bridge = bridge;
2665 bridge = bridge->bus->self; 2666 bridge = bridge->bus->self;
2666 if (!bridge) { 2667 if (!bridge || prev_bridge == bridge) {
2667 dev_err(dev, 2668 dev_err(dev,
2668 "Failed to find root port" 2669 "Failed to find root port"
2669 " to force ECRC\n"); 2670 " to force ECRC\n");