diff mbox

[dpdk-dev] ethdev: Fixed memory corruption in rte_eth_rx_queue_setup and rte_eth_tx_queue_setup

Message ID 1413825995-4509-1-git-send-email-pablo.de.lara.guarch@intel.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

De Lara Guarch, Pablo Oct. 20, 2014, 5:26 p.m. UTC
Commit fbde27f1 (ethdev: get default Rx/Tx configuration from dev info),
introduced a bug, which caused memory corruption in dev_info.
To get RX/TX configuration, both rx/tx queue setup functions were calling
dev_info_get from PMDs, so dev_info structure was not being reseted
before being populated.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 lib/librte_ether/rte_ethdev.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

Thomas Monjalon Oct. 20, 2014, 9:51 p.m. UTC | #1
2014-10-20 18:26, Pablo de Lara:> Commit fbde27f1 (ethdev: get default Rx/Tx configuration from dev info),
> introduced a bug, which caused memory corruption in dev_info.
> To get RX/TX configuration, both rx/tx queue setup functions were calling
> dev_info_get from PMDs, so dev_info structure was not being reseted
> before being populated.
> 
> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>

Applied

Thanks
diff mbox

Patch

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 1659340..6a8b363 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -999,7 +999,7 @@  rte_eth_rx_queue_setup(uint8_t port_id, uint16_t rx_queue_id,
 	 * This value must be provided in the private data of the memory pool.
 	 * First check that the memory pool has a valid private data.
 	 */
-	(*dev->dev_ops->dev_infos_get)(dev, &dev_info);
+	rte_eth_dev_info_get(port_id, &dev_info);
 	if (mp->private_data_size < sizeof(struct rte_pktmbuf_pool_private)) {
 		PMD_DEBUG_TRACE("%s private_data_size %d < %d\n",
 				mp->name, (int) mp->private_data_size,
@@ -1067,7 +1067,7 @@  rte_eth_tx_queue_setup(uint8_t port_id, uint16_t tx_queue_id,
 	FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_infos_get, -ENOTSUP);
 	FUNC_PTR_OR_ERR_RET(*dev->dev_ops->tx_queue_setup, -ENOTSUP);
 
-	(*dev->dev_ops->dev_infos_get)(dev, &dev_info);
+	rte_eth_dev_info_get(port_id, &dev_info);
 
 	if (tx_conf == NULL)
 		tx_conf = &dev_info.default_txconf;