diff options
author | zhanghailiang <zhang.zhanghailiang@huawei.com> | 2016-04-05 11:43:55 +0800 |
---|---|---|
committer | Jason Wang <jasowang@redhat.com> | 2016-04-06 09:52:07 +0800 |
commit | e0a039e50d481dce6b4ee45a29002538a258cd89 (patch) | |
tree | 22e254efdf47f85606f50136363636c33250bf34 /net | |
parent | 91731d5f6d85ca33e7c151e8feac3d5cfafec4d4 (diff) | |
download | qemu-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.c | 2 |
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); } } |