[v3] net/virtio-user: fix return value of tap offload sets not checked
Checks
Commit Message
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>
---
v3:
* Fix return value check incorrectly in v2
v2:
* No need to fail when error is -ENOTSUP.
---
drivers/net/virtio/virtio_user/vhost_kernel_tap.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
Comments
On Mon, Jan 13, 2020 at 03:40:31PM +0800, Yunjian Wang wrote:
> 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>
> ---
> v3:
> * Fix return value check incorrectly in v2
> v2:
> * No need to fail when error is -ENOTSUP.
> ---
> drivers/net/virtio/virtio_user/vhost_kernel_tap.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
On 1/13/20 8:40 AM, Yunjian Wang wrote:
> 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>
> ---
> v3:
> * Fix return value check incorrectly in v2
> v2:
> * No need to fail when error is -ENOTSUP.
> ---
> drivers/net/virtio/virtio_user/vhost_kernel_tap.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
Applied to dpdk-next-virtio/master
Thanks,
Maxime
@@ -66,6 +66,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
@@ -131,7 +132,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;