net/virtio-user: check tap offload setting failure
authorYunjian Wang <wangyunjian@huawei.com>
Mon, 13 Jan 2020 07:40:31 +0000 (15:40 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 17 Jan 2020 18:46:26 +0000 (19:46 +0100)
The function vhost_kernel_tap_set_offload() could return errors,
the return value need to be checked. And there is no need to fail
when error is -ENOTSUP.

Fixes: 1db4d2330bc8 ("net/virtio-user: check negotiated features before set")
Cc: stable@dpdk.org
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
drivers/net/virtio/virtio_user/vhost_kernel_tap.c

index 2fbfecb..2fa4f0d 100644 (file)
@@ -74,6 +74,7 @@ vhost_kernel_open_tap(char **p_ifname, int hdr_size, int req_mq,
        int sndbuf = INT_MAX;
        struct ifreq ifr;
        int tapfd;
+       int ret;
 
        /* TODO:
         * 1. verify we can get/set vnet_hdr_len, tap_probe_vnet_hdr_len
@@ -139,7 +140,9 @@ vhost_kernel_open_tap(char **p_ifname, int hdr_size, int req_mq,
                goto error;
        }
 
-       vhost_kernel_tap_set_offload(tapfd, features);
+       ret = vhost_kernel_tap_set_offload(tapfd, features);
+       if (ret < 0 && ret != -ENOTSUP)
+               goto error;
 
        memset(&ifr, 0, sizeof(ifr));
        ifr.ifr_hwaddr.sa_family = ARPHRD_ETHER;