aboutsummaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorzhanghailiang <zhang.zhanghailiang@huawei.com>2016-04-05 11:43:55 +0800
committerJason Wang <jasowang@redhat.com>2016-04-06 09:52:07 +0800
commite0a039e50d481dce6b4ee45a29002538a258cd89 (patch)
tree22e254efdf47f85606f50136363636c33250bf34 /net
parent91731d5f6d85ca33e7c151e8feac3d5cfafec4d4 (diff)
downloadqemu-e0a039e50d481dce6b4ee45a29002538a258cd89.zip
qemu-e0a039e50d481dce6b4ee45a29002538a258cd89.tar.gz
qemu-e0a039e50d481dce6b4ee45a29002538a258cd89.tar.bz2
filter-buffer: fix segfault when starting qemu with status=off property
After commit 338d3f, we support 'status' property for filter object. The segfault can be triggered by starting qemu with 'status=off' property for filter, when the s->incoming_queue is NULL, we reference it directly in qemu_net_queue_flush() which was called in status_changed() callback function. We shouldn't trigger status_changed() before the filter was initialized, We can check the value of 'nf->netdev' to confirm if the filter is initialized or not, so let's check its value before calling status_changed(). Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'net')
-rw-r--r--net/filter.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/filter.c b/net/filter.c
index 1c4fc5a..8ac79f3 100644
--- a/net/filter.c
+++ b/net/filter.c
@@ -164,7 +164,7 @@ static void netfilter_set_status(Object *obj, const char *str, Error **errp)
return;
}
nf->on = !nf->on;
- if (nfc->status_changed) {
+ if (nf->netdev && nfc->status_changed) {
nfc->status_changed(nf, errp);
}
}