git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
eal/windows: fix warnings
[dpdk.git]
/
lib
/
librte_pci
/
rte_pci.c
diff --git
a/lib/librte_pci/rte_pci.c
b/lib/librte_pci/rte_pci.c
index
530738d
..
9c80c4b
100644
(file)
--- a/
lib/librte_pci/rte_pci.c
+++ b/
lib/librte_pci/rte_pci.c
@@
-20,6
+20,7
@@
#include <rte_eal.h>
#include <rte_string_fns.h>
#include <rte_common.h>
#include <rte_eal.h>
#include <rte_string_fns.h>
#include <rte_common.h>
+#include <rte_debug.h>
#include "rte_pci.h"
#include "rte_pci.h"
@@
-30,6
+31,16
@@
get_u8_pciaddr_field(const char *in, void *_u8, char dlm)
uint8_t *u8 = _u8;
char *end;
uint8_t *u8 = _u8;
char *end;
+ /* empty string is an error though strtoul() returns 0 */
+ if (*in == '\0')
+ return NULL;
+
+ /* PCI field starting with spaces is forbidden.
+ * Negative wrap-around is not reported as an error by strtoul.
+ */
+ if (*in == ' ' || *in == '-')
+ return NULL;
+
errno = 0;
val = strtoul(in, &end, 16);
if (errno != 0 || end[0] != dlm || val > UINT8_MAX) {
errno = 0;
val = strtoul(in, &end, 16);
if (errno != 0 || end[0] != dlm || val > UINT8_MAX) {
@@
-65,11
+76,21
@@
pci_dbdf_parse(const char *input, struct rte_pci_addr *dev_addr)
unsigned long val;
char *end;
unsigned long val;
char *end;
+ /* PCI id starting with spaces is forbidden.
+ * Negative wrap-around is not reported as an error by strtoul.
+ */
+ if (*in == ' ' || *in == '-')
+ return -EINVAL;
+
errno = 0;
val = strtoul(in, &end, 16);
errno = 0;
val = strtoul(in, &end, 16);
- if (errno != 0 || end[0] != ':' || val > UINT16_MAX)
+ /* Empty string is not an error for strtoul, but the check
+ * end[0] != ':'
+ * will detect the issue.
+ */
+ if (errno != 0 || end[0] != ':' || val > UINT32_MAX)
return -EINVAL;
return -EINVAL;
- dev_addr->domain = (uint
16
_t)val;
+ dev_addr->domain = (uint
32
_t)val;
in = end + 1;
in = get_u8_pciaddr_field(in, &dev_addr->bus, ':');
if (in == NULL)
in = end + 1;
in = get_u8_pciaddr_field(in, &dev_addr->bus, ':');
if (in == NULL)
@@
-83,18
+104,6
@@
pci_dbdf_parse(const char *input, struct rte_pci_addr *dev_addr)
return 0;
}
return 0;
}
-int
-eal_parse_pci_BDF(const char *input, struct rte_pci_addr *dev_addr)
-{
- return pci_bdf_parse(input, dev_addr);
-}
-
-int
-eal_parse_pci_DomBDF(const char *input, struct rte_pci_addr *dev_addr)
-{
- return pci_dbdf_parse(input, dev_addr);
-}
-
void
rte_pci_device_name(const struct rte_pci_addr *addr,
char *output, size_t size)
void
rte_pci_device_name(const struct rte_pci_addr *addr,
char *output, size_t size)
@@
-105,13
+114,6
@@
rte_pci_device_name(const struct rte_pci_addr *addr,
addr->devid, addr->function) >= 0);
}
addr->devid, addr->function) >= 0);
}
-int
-rte_eal_compare_pci_addr(const struct rte_pci_addr *addr,
- const struct rte_pci_addr *addr2)
-{
- return rte_pci_addr_cmp(addr, addr2);
-}
-
int
rte_pci_addr_cmp(const struct rte_pci_addr *addr,
const struct rte_pci_addr *addr2)
int
rte_pci_addr_cmp(const struct rte_pci_addr *addr,
const struct rte_pci_addr *addr2)