svn commit: r213608 - stable/7/sys/dev/sis
Pyun YongHyeon
yongari at FreeBSD.org
Fri Oct 8 20:12:01 UTC 2010
Author: yongari
Date: Fri Oct 8 20:12:00 2010
New Revision: 213608
URL: http://svn.freebsd.org/changeset/base/213608
Log:
MFC r182065:
There actually were bugs in the original handling that I missed last
night.
Free the children after each pci bus that is searched. Otherwise we
leak them. With free in the new place, we also have to free children
before going to done when we find the device we're looking for.
Also, if we can't get the children of a device, just ignore that bus.
Modified:
stable/7/sys/dev/sis/if_sis.c
Directory Properties:
stable/7/sys/ (props changed)
stable/7/sys/cddl/contrib/opensolaris/ (props changed)
stable/7/sys/contrib/dev/acpica/ (props changed)
stable/7/sys/contrib/pf/ (props changed)
Modified: stable/7/sys/dev/sis/if_sis.c
==============================================================================
--- stable/7/sys/dev/sis/if_sis.c Fri Oct 8 19:39:35 2010 (r213607)
+++ stable/7/sys/dev/sis/if_sis.c Fri Oct 8 20:12:00 2010 (r213608)
@@ -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);
}
More information about the svn-src-stable
mailing list