qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2] filter-buffer: fix segfault when starting qemu with status=off property
@ 2016-04-05  3:43 zhanghailiang
  2016-04-05  8:32 ` Jason Wang
  0 siblings, 1 reply; 2+ messages in thread
From: zhanghailiang @ 2016-04-05  3:43 UTC (permalink / raw)
  To: qemu-devel; +Cc: jasowang, zhanghailiang

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>
---
v2:
 - fix the segfault by skipping calling status_changed() if the filter
   is not initialized. (Jason Wang's suggestion)
---
 net/filter.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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);
     }
 }
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [Qemu-devel] [PATCH v2] filter-buffer: fix segfault when starting qemu with status=off property
  2016-04-05  3:43 [Qemu-devel] [PATCH v2] filter-buffer: fix segfault when starting qemu with status=off property zhanghailiang
@ 2016-04-05  8:32 ` Jason Wang
  0 siblings, 0 replies; 2+ messages in thread
From: Jason Wang @ 2016-04-05  8:32 UTC (permalink / raw)
  To: zhanghailiang, qemu-devel



On 04/05/2016 11:43 AM, zhanghailiang wrote:
> 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>
> ---
> v2:
>  - fix the segfault by skipping calling status_changed() if the filter
>    is not initialized. (Jason Wang's suggestion)
> ---
>  net/filter.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> 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);
>      }
>  }

Applied to -net.

Thanks

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-04-05  8:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-05  3:43 [Qemu-devel] [PATCH v2] filter-buffer: fix segfault when starting qemu with status=off property zhanghailiang
2016-04-05  8:32 ` Jason Wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).