examples/vhost: fix use after free on drain
When a vdev is removed in destroy_device function,
the corresponding vhost TX buffer will also be freed,
but the vhost TX buffer may still be used in the
drain_vhost function, which will cause an error of
heap-use-after-free. Therefore, before accessing
vhost TX buffer, we need to check whether the vdev
has been removed, if so, let's skip this vdev.
Fixes: a68ba8e0a6
("examples/vhost: refactor vhost data path")
Cc: stable@dpdk.org
Signed-off-by: Wenwu Ma <wenwux.ma@intel.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
This commit is contained in:
parent
99ebada2d6
commit
ad5050e42e
@ -914,6 +914,9 @@ drain_vhost_table(void)
|
||||
uint64_t cur_tsc;
|
||||
|
||||
TAILQ_FOREACH(vdev, &vhost_dev_list, global_vdev_entry) {
|
||||
if (unlikely(vdev->remove == 1))
|
||||
continue;
|
||||
|
||||
vhost_txq = vhost_txbuff[lcore_id * MAX_VHOST_DEVICE
|
||||
+ vdev->vid];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user