Projects
home:Eustace:branches:Eulaceura:Factory
dpdk
_service:obs_scm:0039-net-hns3-fix-double-free-...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0039-net-hns3-fix-double-free-for-Rx-Tx-queue.patch of Package dpdk
From 5f3efed4c06e8d68aa2089db660c4c23b21df291 Mon Sep 17 00:00:00 2001 From: Dengdui Huang <huangdengdui@huawei.com> Date: Wed, 3 Apr 2024 18:16:21 +0800 Subject: [PATCH 39/42] net/hns3: fix double free for Rx/Tx queue [ upstream commit 833a5beab5bfc16708ee9b53c83e2f221cd99f90 ] The Pointers to some resources on the Rx/Tx queue need to be set to NULL after free inside the hns3_rx/tx_queue_release(), as this function is called from multiple threads (reset thread, device config thread, etc), leading to double memory free error. Fixes: bba636698316 ("net/hns3: support Rx/Tx and related operations") Cc: stable@dpdk.org Signed-off-by: Dengdui Huang <huangdengdui@huawei.com> Signed-off-by: Jie Hai <haijie1@huawei.com> --- drivers/net/hns3/hns3_rxtx.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c index bba29a9..d43cc96 100644 --- a/drivers/net/hns3/hns3_rxtx.c +++ b/drivers/net/hns3/hns3_rxtx.c @@ -86,9 +86,14 @@ hns3_rx_queue_release(void *queue) struct hns3_rx_queue *rxq = queue; if (rxq) { hns3_rx_queue_release_mbufs(rxq); - if (rxq->mz) + if (rxq->mz) { rte_memzone_free(rxq->mz); - rte_free(rxq->sw_ring); + rxq->mz = NULL; + } + if (rxq->sw_ring) { + rte_free(rxq->sw_ring); + rxq->sw_ring = NULL; + } rte_free(rxq); } } @@ -99,10 +104,18 @@ hns3_tx_queue_release(void *queue) struct hns3_tx_queue *txq = queue; if (txq) { hns3_tx_queue_release_mbufs(txq); - if (txq->mz) + if (txq->mz) { rte_memzone_free(txq->mz); - rte_free(txq->sw_ring); - rte_free(txq->free); + txq->mz = NULL; + } + if (txq->sw_ring) { + rte_free(txq->sw_ring); + txq->sw_ring = NULL; + } + if (txq->free) { + rte_free(txq->free); + txq->free = NULL; + } rte_free(txq); } } -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2