]> git.droids-corp.org - dpdk.git/commitdiff
net/i40e: fix VSI removing when releasing
authorJingjing Wu <jingjing.wu@intel.com>
Mon, 25 Jul 2016 05:36:09 +0000 (13:36 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 25 Jul 2016 15:55:12 +0000 (17:55 +0200)
VSI structure needs to be removed from TAILQ list when releasing.
But for the child VSI it will be removed again after the structure
is freed. It will cause core dump when the DPDK i40e using as PF
host driver.

This patch fixes it to only remove child VSI from TAILQ before
send adminq command to remove it from hardware.

Fixes: 4861cde46116 ("i40e: new poll mode driver")
Fixes: 440499cf5376 ("net/i40e: support floating VEB")
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
drivers/net/i40e/i40e_ethdev.c

index 11a5804139195be75323ea618ef0c506be1c7a58..d0aeb70314a8418b99398e8696ff9e8903c765ef 100644 (file)
@@ -4110,7 +4110,6 @@ i40e_vsi_release(struct i40e_vsi *vsi)
                TAILQ_FOREACH_SAFE(vsi_list, &vsi->veb->head, list, temp) {
                        if (i40e_vsi_release(vsi_list->vsi) != I40E_SUCCESS)
                                return -1;
-                       TAILQ_REMOVE(&vsi->veb->head, vsi_list, list);
                }
                i40e_veb_release(vsi->veb);
        }
@@ -4119,7 +4118,6 @@ i40e_vsi_release(struct i40e_vsi *vsi)
                TAILQ_FOREACH_SAFE(vsi_list, &vsi->floating_veb->head, list, temp) {
                        if (i40e_vsi_release(vsi_list->vsi) != I40E_SUCCESS)
                                return -1;
-                       TAILQ_REMOVE(&vsi->floating_veb->head, vsi_list, list);
                }
        }