[v2] net/virtio-user: fix return value of tap offload sets not checked

Message ID 1578572304-2296-1-git-send-email-wangyunjian@huawei.com (mailing list archive)
State Superseded, archived
Delegated to: Maxime Coquelin
Headers
Series [v2] net/virtio-user: fix return value of tap offload sets not checked |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/travis-robot warning Travis build: failed
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/iol-nxp-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK

Commit Message

Yunjian Wang Jan. 9, 2020, 12:18 p.m. UTC
  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>
---
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

Tiwei Bie Jan. 13, 2020, 2:16 a.m. UTC | #1
On Thu, Jan 09, 2020 at 08:18:24PM +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>
> ---
> 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(-)
> 
> diff --git a/drivers/net/virtio/virtio_user/vhost_kernel_tap.c b/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
> index 76bf75423..2a0c2106d 100644
> --- a/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
> +++ b/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
> @@ -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)

s/ENOTSUP/-ENOTSUP/

> +		goto error;
>  
>  	memset(&ifr, 0, sizeof(ifr));
>  	ifr.ifr_hwaddr.sa_family = ARPHRD_ETHER;
> -- 
> 2.19.1
> 
>
  
Yunjian Wang Jan. 13, 2020, 7:26 a.m. UTC | #2
> -----Original Message-----
> From: Tiwei Bie [mailto:tiwei.bie@intel.com]
> Sent: Monday, January 13, 2020 10:16 AM
> To: wangyunjian <wangyunjian@huawei.com>
> Cc: dev@dpdk.org; maxime.coquelin@redhat.com; zhihong.wang@intel.com;
> xudingke <xudingke@huawei.com>; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v2] net/virtio-user: fix return value of tap offload
> sets not checked
> 
> On Thu, Jan 09, 2020 at 08:18:24PM +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>
> > ---
> > 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(-)
> >
> > diff --git a/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
> > b/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
> > index 76bf75423..2a0c2106d 100644
> > --- a/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
> > +++ b/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
> > @@ -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)
> 
> s/ENOTSUP/-ENOTSUP/

Thanks, I will fix it in v3.

Yunjian

> 
> > +		goto error;
> >
> >  	memset(&ifr, 0, sizeof(ifr));
> >  	ifr.ifr_hwaddr.sa_family = ARPHRD_ETHER;
> > --
> > 2.19.1
> >
> >
  

Patch

diff --git a/drivers/net/virtio/virtio_user/vhost_kernel_tap.c b/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
index 76bf75423..2a0c2106d 100644
--- a/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
+++ b/drivers/net/virtio/virtio_user/vhost_kernel_tap.c
@@ -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;