[ovs-dev] [PATCH] netdev-dpdk: When no QoS set, set type to empty string

Stokes, Ian ian.stokes at intel.com
Tue Aug 2 15:19:02 UTC 2016


> This patch sets *typep to an empty string instead of letting it
> uninitialized when no QoS configuration is set.
> 
> It fixes the following vswitchd crash when no QoS has been set on vhost-
> user interface:
> 
>  $> ovs-appctl -t ovs-vswitchd qos/show vhost-user1
> 
>  #0  0x00007efcbadf18d7 in raise () from /lib64/libc.so.6
>  #1  0x00007efcbadf353a in abort () from /lib64/libc.so.6
>  #2  0x000000000068d5be in ovs_abort_valist at lib/util.c:335
>  #3  0x0000000000693d90 in vlog_abort_valist at lib/vlog.c:1204
>  #4  0x0000000000693e17 in vlog_abort at lib/vlog.c:1218
>  #5  0x000000000068d3ae in ovs_assert_failure at lib/util.c:72
>  #6  0x000000000060425c in ds_put_format_valist at lib/dynamic-
> string.c:168
>  #7  0x00000000006042e7 in ds_put_format at lib/dynamic-string.c:142
>  #8  0x00000000005a9e75 in qos_unixctl_show at vswitchd/bridge.c:3185
>  #9  0x000000000068cda1 in process_command at lib/unixctl.c:347
>  #11 unixctl_server_run at lib/unixctl.c:400
>  #12 0x000000000040a3ff in main at vswitchd/ovs-vswitchd.c:113
> 
> Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
> ---
>  lib/netdev-dpdk.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index
> a0d541a..159fe73 100644
> --- a/lib/netdev-dpdk.c
> +++ b/lib/netdev-dpdk.c
> @@ -2680,6 +2680,9 @@ netdev_dpdk_get_qos(const struct netdev *netdev,
>          *typep = dev->qos_conf->ops->qos_name;
>          error = (dev->qos_conf->ops->qos_get
>                   ? dev->qos_conf->ops->qos_get(netdev, details): 0);
> +    } else {
> +        /* No QoS configuration set, return an empty string */
> +        *typep = "";
>      }
>      ovs_mutex_unlock(&dev->mutex);
> 
> --
> 2.7.4

Thanks for the Patch Maxime. 

I tried to recreate the segfault with the steps you've outlined on my own system without the patch but could not.

I'm Running Fedora 22 with kernel 4.1.8-200 and gcc 5.3.1. Out of interest what was your test environment?

Either way I agree that type should be set to "" when no QoS is not configured.

Acked-by: Ian Stokes <ian.stokes at intel.com>

> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev


More information about the dev mailing list