Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146981879
D7445.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D7445.diff
View Options
Index: head/share/man/man4/pci.4
===================================================================
--- head/share/man/man4/pci.4
+++ head/share/man/man4/pci.4
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd January 3, 2008
+.Dd August 9, 2016
.Dt PCI 4
.Os
.Sh NAME
@@ -229,7 +229,8 @@
The possible status values are:
.Bl -ohang
.It PCI_GETCONF_LAST_DEVICE
-This means that there are no more devices in the PCI device list after the
+This means that there are no more devices in the PCI device list matching
+the specified criteria after the
ones returned in the
.Va matches
buffer.
@@ -245,9 +246,7 @@
to zero to start over at the beginning of the list.
.It PCI_GETCONF_MORE_DEVS
This tells the user that his buffer was not large enough to hold all of the
-remaining devices in the device list that possibly match his criteria.
-It is possible for this status to be returned, even when none of the remaining
-devices in the list would match the user's criteria.
+remaining devices in the device list that match his criteria.
.It PCI_GETCONF_ERROR
This indicates a general error while servicing the user's request.
If the
Index: head/sys/dev/pci/pci_user.c
===================================================================
--- head/sys/dev/pci/pci_user.c
+++ head/sys/dev/pci/pci_user.c
@@ -708,10 +708,9 @@
* Go through the list of devices and copy out the devices
* that match the user's criteria.
*/
- for (cio->num_matches = 0, error = 0, i = 0,
+ for (cio->num_matches = 0, i = 0,
dinfo = STAILQ_FIRST(devlist_head);
- (dinfo != NULL) && (cio->num_matches < ionum) &&
- (error == 0) && (i < pci_numdevs);
+ dinfo != NULL;
dinfo = STAILQ_NEXT(dinfo, pci_links), i++) {
if (i < cio->offset)
@@ -833,11 +832,12 @@
} else
#endif /* PRE7_COMPAT */
confdata = &dinfo->conf;
- /* Only if we can copy it out do we count it. */
- if (!(error = copyout(confdata,
+ error = copyout(confdata,
(caddr_t)cio->matches +
- confsz * cio->num_matches, confsz)))
- cio->num_matches++;
+ confsz * cio->num_matches, confsz);
+ if (error)
+ break;
+ cio->num_matches++;
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Mar 8, 8:03 AM (6 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29399863
Default Alt Text
D7445.diff (2 KB)
Attached To
Mode
D7445: Reliably return PCI_GETCONF_LAST_DEVICE from PCIOCGETCONF.
Attached
Detach File
Event Timeline
Log In to Comment