* [dpdk-dev] [PATCH v1] examples/ethtool: fix segfault querying non-PCI devices
@ 2016-11-30 2:47 Remy Horton
2016-12-20 15:11 ` Thomas Monjalon
0 siblings, 1 reply; 2+ messages in thread
From: Remy Horton @ 2016-11-30 2:47 UTC (permalink / raw)
To: dev
Doing a device information query on a non-PCI device such as
vhost was resulting in the dereferencing of a NULL pointer
(the absent PCI data), causing a segmentation fault.
Fixes: bda68ab9d1e7 ("examples/ethtool: add user-space ethtool sample application")
Signed-off-by: Remy Horton <remy.horton@intel.com>
---
doc/guides/rel_notes/release_17_02.rst | 3 +++
examples/ethtool/lib/rte_ethtool.c | 13 +++++++++----
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/doc/guides/rel_notes/release_17_02.rst b/doc/guides/rel_notes/release_17_02.rst
index 3b65038..f471e49 100644
--- a/doc/guides/rel_notes/release_17_02.rst
+++ b/doc/guides/rel_notes/release_17_02.rst
@@ -70,6 +70,9 @@ Libraries
Examples
~~~~~~~~
+ * **examples/ethtool Fixed crash with non-PCI devices.**
+ Querying a non-PCI device was dereferencing non-existent PCI data
+ resulting in a segmentation fault.
Other
~~~~~
diff --git a/examples/ethtool/lib/rte_ethtool.c b/examples/ethtool/lib/rte_ethtool.c
index a1f91d4..6f0ce84 100644
--- a/examples/ethtool/lib/rte_ethtool.c
+++ b/examples/ethtool/lib/rte_ethtool.c
@@ -61,10 +61,15 @@ rte_ethtool_get_drvinfo(uint8_t port_id, struct ethtool_drvinfo *drvinfo)
dev_info.driver_name);
snprintf(drvinfo->version, sizeof(drvinfo->version), "%s",
rte_version());
- snprintf(drvinfo->bus_info, sizeof(drvinfo->bus_info),
- "%04x:%02x:%02x.%x",
- dev_info.pci_dev->addr.domain, dev_info.pci_dev->addr.bus,
- dev_info.pci_dev->addr.devid, dev_info.pci_dev->addr.function);
+ if (dev_info.pci_dev)
+ snprintf(drvinfo->bus_info, sizeof(drvinfo->bus_info),
+ "%04x:%02x:%02x.%x",
+ dev_info.pci_dev->addr.domain,
+ dev_info.pci_dev->addr.bus,
+ dev_info.pci_dev->addr.devid,
+ dev_info.pci_dev->addr.function);
+ else
+ snprintf(drvinfo->bus_info, sizeof(drvinfo->bus_info), "N/A");
memset(®_info, 0, sizeof(reg_info));
rte_eth_dev_get_reg_info(port_id, ®_info);
--
2.5.5
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [dpdk-dev] [PATCH v1] examples/ethtool: fix segfault querying non-PCI devices
2016-11-30 2:47 [dpdk-dev] [PATCH v1] examples/ethtool: fix segfault querying non-PCI devices Remy Horton
@ 2016-12-20 15:11 ` Thomas Monjalon
0 siblings, 0 replies; 2+ messages in thread
From: Thomas Monjalon @ 2016-12-20 15:11 UTC (permalink / raw)
To: Remy Horton; +Cc: dev
2016-11-30 10:47, Remy Horton:
> Doing a device information query on a non-PCI device such as
> vhost was resulting in the dereferencing of a NULL pointer
> (the absent PCI data), causing a segmentation fault.
>
> Fixes: bda68ab9d1e7 ("examples/ethtool: add user-space ethtool sample application")
>
> Signed-off-by: Remy Horton <remy.horton@intel.com>
[...]
> --- a/doc/guides/rel_notes/release_17_02.rst
> +++ b/doc/guides/rel_notes/release_17_02.rst
> @@ -70,6 +70,9 @@ Libraries
> Examples
> ~~~~~~~~
>
> + * **examples/ethtool Fixed crash with non-PCI devices.**
> + Querying a non-PCI device was dereferencing non-existent PCI data
> + resulting in a segmentation fault.
indentation fixed here
Applied, thanks
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-12-20 15:12 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-30 2:47 [dpdk-dev] [PATCH v1] examples/ethtool: fix segfault querying non-PCI devices Remy Horton
2016-12-20 15:11 ` Thomas Monjalon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).