avf: crash on avf interface delete
When deleting an avf interface which is not the very first interface that was created (dev_instance == 0), VPP crashes. The reason is every avf interface delete always removes the very first device instance due to ad->dev_instance was wiped out prior to the statement pool_put_index (am->devices, ad->dev_instance) Type: fix Signed-off-by: Steven Luong <sluong@cisco.com> Change-Id: I69bd1588aab9a176f8eef46be7aa5063f5d29482
This commit is contained in:
@@ -1469,6 +1469,7 @@ avf_delete_if (vlib_main_t * vm, avf_device_t * ad, int with_barrier)
|
||||
vnet_main_t *vnm = vnet_get_main ();
|
||||
avf_main_t *am = &avf_main;
|
||||
int i;
|
||||
u32 dev_instance;
|
||||
|
||||
ad->flags &= ~AVF_DEVICE_F_ADMIN_UP;
|
||||
|
||||
@@ -1523,8 +1524,9 @@ avf_delete_if (vlib_main_t * vm, avf_device_t * ad, int with_barrier)
|
||||
vec_free (ad->name);
|
||||
|
||||
clib_error_free (ad->error);
|
||||
dev_instance = ad->dev_instance;
|
||||
clib_memset (ad, 0, sizeof (*ad));
|
||||
pool_put_index (am->devices, ad->dev_instance);
|
||||
pool_put_index (am->devices, dev_instance);
|
||||
clib_mem_free (ad);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user