aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/sis/if_sis.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/sis/if_sis.c b/sys/dev/sis/if_sis.c
index e5292ebf5e3d..90cd430ab683 100644
--- a/sys/dev/sis/if_sis.c
+++ b/sys/dev/sis/if_sis.c
@@ -347,21 +347,22 @@ sis_find_bridge(device_t dev)
devclass_get_devices(pci_devclass, &pci_devices, &pci_count);
for (i = 0, busp = pci_devices; i < pci_count; i++, busp++) {
- pci_childcount = 0;
- device_get_children(*busp, &pci_children, &pci_childcount);
+ if (device_get_children(*busp, &pci_children, &pci_childcount))
+ continue;
for (j = 0, childp = pci_children;
j < pci_childcount; j++, childp++) {
if (pci_get_vendor(*childp) == SIS_VENDORID &&
pci_get_device(*childp) == 0x0008) {
child = *childp;
+ free(pci_children, M_TEMP);
goto done;
}
}
+ free(pci_children, M_TEMP);
}
done:
free(pci_devices, M_TEMP);
- free(pci_children, M_TEMP);
return(child);
}