[v2] app/pdump: only remove created vdevs

Message ID 20190226160437.10666-1-gage.eads@intel.com
State Accepted, archived
Delegated to: Ferruh Yigit
Headers show
Series
  • [v2] app/pdump: only remove created vdevs
Related show

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/intel-Performance-Testing success Performance Testing PASS
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/checkpatch success coding style OK

Commit Message

Eads, Gage Feb. 26, 2019, 4:04 p.m.
This commit fixes a bug in which a unidirectional pdump could attempt to
remove devices it didn't create.

Fixes: 35cb223ab7be ("app/pdump: fix vdev cleanup")
Cc: stable@dpdk.org

Signed-off-by: Gage Eads <gage.eads@intel.com>
Acked-by: Reshma Pattan <reshma.pattan@intel.com>
---
v2: Tweak commit message

 app/pdump/main.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

Comments

Ferruh Yigit Feb. 27, 2019, 11:53 a.m. | #1
On 2/26/2019 4:04 PM, Gage Eads wrote:
> This commit fixes a bug in which a unidirectional pdump could attempt to
> remove devices it didn't create.
> 
> Fixes: 35cb223ab7be ("app/pdump: fix vdev cleanup")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Gage Eads <gage.eads@intel.com>
> Acked-by: Reshma Pattan <reshma.pattan@intel.com>

Applied to dpdk-next-net/master, thanks.

Patch

diff --git a/app/pdump/main.c b/app/pdump/main.c
index 5e183ea90..ccf2a1d2f 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -512,12 +512,19 @@  cleanup_pdump_resources(void)
 		if (pt->dir & RTE_PDUMP_FLAG_TX)
 			free_ring_data(pt->tx_ring, pt->tx_vdev_id, &pt->stats);
 
-		/* Remove the vdev created */
-		rte_eth_dev_get_name_by_port(pt->rx_vdev_id, name);
-		rte_eal_hotplug_remove("vdev", name);
+		/* Remove the vdev(s) created */
+		if (pt->dir & RTE_PDUMP_FLAG_RX) {
+			rte_eth_dev_get_name_by_port(pt->rx_vdev_id, name);
+			rte_eal_hotplug_remove("vdev", name);
+		}
+
+		if (pt->single_pdump_dev)
+			continue;
 
-		rte_eth_dev_get_name_by_port(pt->tx_vdev_id, name);
-		rte_eal_hotplug_remove("vdev", name);
+		if (pt->dir & RTE_PDUMP_FLAG_TX) {
+			rte_eth_dev_get_name_by_port(pt->tx_vdev_id, name);
+			rte_eal_hotplug_remove("vdev", name);
+		}
 
 	}
 	cleanup_rings();