summaryrefslogtreecommitdiff
path: root/sys/dev/pci
diff options
context:
space:
mode:
authorMarcel Moolenaar <marcel@FreeBSD.org>2011-02-13 19:26:51 +0000
committerMarcel Moolenaar <marcel@FreeBSD.org>2011-02-13 19:26:51 +0000
commitbba39e1034191107e0a79889139022faeeae95ba (patch)
treecb66b1eea9e88e96986a50679fcac23277b36f72 /sys/dev/pci
parent01f7b6dad306ef87e28e5fb8a2a3f9c7224e9bdf (diff)
Notes
Diffstat (limited to 'sys/dev/pci')
-rw-r--r--sys/dev/pci/pci.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index e3b61595ce63..e2e2d5540358 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -3056,15 +3056,20 @@ pci_resume(device_t dev)
static void
pci_load_vendor_data(void)
{
- caddr_t vendordata, info;
+ caddr_t data;
+ void *ptr;
+ size_t sz;
- if ((vendordata = preload_search_by_type("pci_vendor_data")) != NULL) {
- info = preload_search_info(vendordata, MODINFO_ADDR);
- pci_vendordata = *(char **)info;
- info = preload_search_info(vendordata, MODINFO_SIZE);
- pci_vendordata_size = *(size_t *)info;
- /* terminate the database */
- pci_vendordata[pci_vendordata_size] = '\n';
+ data = preload_search_by_type("pci_vendor_data");
+ if (data != NULL) {
+ ptr = preload_fetch_addr(data);
+ sz = preload_fetch_size(data);
+ if (ptr != NULL && sz != 0) {
+ pci_vendordata = ptr;
+ pci_vendordata_size = sz;
+ /* terminate the database */
+ pci_vendordata[pci_vendordata_size] = '\n';
+ }
}
}