Message ID | 20191114141613.15804-4-jfreimann@redhat.com |
---|---|
State | New |
Headers | show |
Series | [1/4] net/virtio: fix dev_unplug_pending | expand |
On Thu, Nov 14, 2019 at 03:16:13PM +0100, Jens Freimann wrote: > device_opts could be NULL. Make sure we don't pass it to > qemu_opts_to_dict. When we made sure it can't be NULL we can also remove > it from the if condition. > 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> > --- > 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 81650d4dc0..d53aa5796b 100644 > --- a/hw/net/virtio-net.c > +++ b/hw/net/virtio-net.c > @@ -2878,9 +2878,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) { > @@ -2888,7 +2891,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; > -- > 2.21.0
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 81650d4dc0..d53aa5796b 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -2878,9 +2878,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) { @@ -2888,7 +2891,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;
device_opts could be NULL. Make sure we don't pass it to qemu_opts_to_dict. When we made sure it can't be NULL we can also remove it from the if condition. This fixes CID 1407222. Fixes: 9711cd0dfc3f ("net/virtio: add failover support") Signed-off-by: Jens Freimann <jfreimann@redhat.com> --- hw/net/virtio-net.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)