Skip to content
Snippets Groups Projects
Commit 5dd2d45e authored by Jason Wang's avatar Jason Wang
Browse files

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: default avatarYang Hongyang <hongyang.yang@easystack.cn>
Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
parent 415ab35a
No related branches found
No related tags found
No related merge requests found
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment