diff mbox series

[PULL,4/4] net/virtio: return error when device_opts arg is NULL

Message ID 1574696407-4188-5-git-send-email-jasowang@redhat.com
State New
Headers show
Series [PULL,1/4] net/virtio: fix dev_unplug_pending | expand

Commit Message

Jason Wang Nov. 25, 2019, 3:40 p.m. UTC
From: Jens Freimann <jfreimann@redhat.com>

This fixes CID 1407222.

Fixes: 9711cd0dfc3f ("net/virtio: add failover support")
Signed-off-by: Jens Freimann <jfreimann@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 hw/net/virtio-net.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Comments

Paolo Bonzini Nov. 25, 2019, 4:08 p.m. UTC | #1
On 25/11/19 16:40, Jason Wang wrote:
> From: Jens Freimann <jfreimann@redhat.com>
> 
> This fixes CID 1407222.
> 
> Fixes: 9711cd0dfc3f ("net/virtio: add failover support")
> Signed-off-by: Jens Freimann <jfreimann@redhat.com>
> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> Signed-off-by: Jason Wang <jasowang@redhat.com>
> ---
>  hw/net/virtio-net.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> index 565dea0..3c31471 100644
> --- a/hw/net/virtio-net.c
> +++ b/hw/net/virtio-net.c
> @@ -2880,9 +2880,12 @@ static int virtio_net_primary_should_be_hidden(DeviceListener *listener,
>              QemuOpts *device_opts)
>  {
>      VirtIONet *n = container_of(listener, VirtIONet, primary_listener);
> -    bool match_found;
> -    bool hide;
> +    bool match_found = false;
> +    bool hide = false;
>  
> +    if (!device_opts) {
> +        return -1;
> +    }
>      n->primary_device_dict = qemu_opts_to_qdict(device_opts,
>              n->primary_device_dict);
>      if (n->primary_device_dict) {
> @@ -2890,7 +2893,7 @@ static int virtio_net_primary_should_be_hidden(DeviceListener *listener,
>          n->standby_id = g_strdup(qdict_get_try_str(n->primary_device_dict,
>                      "failover_pair_id"));
>      }
> -    if (device_opts && g_strcmp0(n->standby_id, n->netclient_name) == 0) {
> +    if (g_strcmp0(n->standby_id, n->netclient_name) == 0) {
>          match_found = true;
>      } else {
>          match_found = false;
> 

It can't be NULL though, can it?  It is called from a qemu_foreach_opt
callback on device_opts itself.  This can be "re-fixed" in 5.0 though,
no hurry.

Paolo
diff mbox series

Patch

diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 565dea0..3c31471 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -2880,9 +2880,12 @@  static int virtio_net_primary_should_be_hidden(DeviceListener *listener,
             QemuOpts *device_opts)
 {
     VirtIONet *n = container_of(listener, VirtIONet, primary_listener);
-    bool match_found;
-    bool hide;
+    bool match_found = false;
+    bool hide = false;
 
+    if (!device_opts) {
+        return -1;
+    }
     n->primary_device_dict = qemu_opts_to_qdict(device_opts,
             n->primary_device_dict);
     if (n->primary_device_dict) {
@@ -2890,7 +2893,7 @@  static int virtio_net_primary_should_be_hidden(DeviceListener *listener,
         n->standby_id = g_strdup(qdict_get_try_str(n->primary_device_dict,
                     "failover_pair_id"));
     }
-    if (device_opts && g_strcmp0(n->standby_id, n->netclient_name) == 0) {
+    if (g_strcmp0(n->standby_id, n->netclient_name) == 0) {
         match_found = true;
     } else {
         match_found = false;