[ovs-dev] [PATCH 2/2] netdev-dpdk: Fix a bug in netdev_dpdk_set_multiq().

Alex Wang alexw at nicira.com
Fri Sep 19 18:49:05 UTC 2014


sure, i'm okay with that,


On Fri, Sep 19, 2014 at 11:22 AM, Daniele Di Proietto <
ddiproietto at vmware.com> wrote:

> How about changing Œnetdev_dpdk_set_txq()¹ to 'netdev_dpdk_alloc_txq()¹?
> IMHO it is more clear that it is allocating memory without freeing it.
>
> Otherwise, LGTM. Thanks for the fix
>
> Acked-by: Daniele Di Proietto <ddiproietto at vmware.com>
>
> On 9/19/14, 10:57 AM, "Alex Wang" <alexw at nicira.com> wrote:
>
> >Commit 5a0340 (dpif-netdev: Create multiple tx/rx queues when
> >adding dpdk interface.) introduced a bug which causes the function
> >netdev_dpdk_set_multiq() never resetting the tx queues.  This bug
> >could cause pmd thread accessing unassigned memory, resulting in
> >segfault.
> >
> >This commit fixes the bug.
> >
> >Reported-by: Ethan Jackson <ethan at nicira.com>
> >Signed-off-by: Alex Wang <alexw at nicira.com>
> >---
> > lib/netdev-dpdk.c |    9 +++++----
> > 1 file changed, 5 insertions(+), 4 deletions(-)
> >
> >diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
> >index ed39b9c..0101c7d 100644
> >--- a/lib/netdev-dpdk.c
> >+++ b/lib/netdev-dpdk.c
> >@@ -622,14 +622,15 @@ netdev_dpdk_set_multiq(struct netdev *netdev_,
> >unsigned int n_txq,
> >
> >     ovs_mutex_lock(&dpdk_mutex);
> >     ovs_mutex_lock(&netdev->mutex);
> >+
> >     rte_eth_dev_stop(netdev->port_id);
> >+
> >     netdev->up.n_txq = n_txq;
> >     netdev->up.n_rxq = n_rxq;
> >+    rte_free(netdev->tx_q);
> >+    netdev_dpdk_set_txq(netdev, n_txq);
> >     err = dpdk_eth_dev_init(netdev);
> >-    if (!err && netdev->up.n_txq != n_txq) {
> >-        rte_free(netdev->tx_q);
> >-        netdev_dpdk_set_txq(netdev, n_txq);
> >-    }
> >+
> >     ovs_mutex_unlock(&netdev->mutex);
> >     ovs_mutex_unlock(&dpdk_mutex);
> >
> >--
> >1.7.9.5
> >
>
>



More information about the dev mailing list