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 <ddiproie...@vmware.com> On 9/19/14, 10:57 AM, "Alex Wang" <al...@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 <et...@nicira.com> >Signed-off-by: Alex Wang <al...@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 > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev