mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
net: filter: correctly remove filter from the list during finalization
Qemu may crash when we want to add two filters on the same netdev but the initialization of second fails (e.g missing parameters): ./qemu-system-x86_64 -netdev user,id=un0 \ -object filter-buffer,id=f0,netdev=un0,interval=10 \ -object filter-buffer,id=f1,netdev=un0 Segmentation fault (core dumped) This is because we don't check whether or not the filter was in the list of netdev. This patch fixes this. Cc: Yang Hongyang <hongyang.yang@easystack.cn> Reviewed-by: Yang Hongyang <hongyang.yang@easystack.cn> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
415ab35a44
commit
5dd2d45e34
1 changed files with 2 additions and 1 deletions
|
@ -196,7 +196,8 @@ static void netfilter_finalize(Object *obj)
|
|||
nfc->cleanup(nf);
|
||||
}
|
||||
|
||||
if (nf->netdev && !QTAILQ_EMPTY(&nf->netdev->filters)) {
|
||||
if (nf->netdev && !QTAILQ_EMPTY(&nf->netdev->filters) &&
|
||||
nf->next.tqe_prev) {
|
||||
QTAILQ_REMOVE(&nf->netdev->filters, nf, next);
|
||||
}
|
||||
g_free(nf->netdev_id);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue