virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH net] tun: fix return value when the number of iovs exceeds MAX_SKB_FRAGS
       [not found] <1608810533-8308-1-git-send-email-wangyunjian@huawei.com>
@ 2020-12-24 15:56 ` Willem de Bruijn
  2020-12-27 11:18   ` Michael S. Tsirkin
  2020-12-27  9:39 ` Michael S. Tsirkin
  1 sibling, 1 reply; 3+ messages in thread
From: Willem de Bruijn @ 2020-12-24 15:56 UTC (permalink / raw)
  To: wangyunjian
  Cc: Willem de Bruijn, Michael S. Tsirkin, Network Development,
	Lilijun (Jerry), virtualization, xudingke, huangbin (J),
	chenchanghu

On Thu, Dec 24, 2020 at 6:51 AM wangyunjian <wangyunjian@huawei.com> wrote:
>
> From: Yunjian Wang <wangyunjian@huawei.com>
>
> Currently the tun_napi_alloc_frags() function returns -ENOMEM when the
> number of iovs exceeds MAX_SKB_FRAGS + 1. However this is inappropriate,
> we should use -EMSGSIZE instead of -ENOMEM.
>
> Fixes: 90e33d459407 ("tun: enable napi_gro_frags() for TUN/TAP driver")
> Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>

Acked-by: Willem de Bruijn <willemb@google.com>

It might be good to explain why the distinction matters: one denotes a
transient failure that the caller (specifically vhost_net) can retry,
the other a persistent failure due to bad packet geometry that should
be dropped.
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH net] tun: fix return value when the number of iovs exceeds MAX_SKB_FRAGS
       [not found] <1608810533-8308-1-git-send-email-wangyunjian@huawei.com>
  2020-12-24 15:56 ` [PATCH net] tun: fix return value when the number of iovs exceeds MAX_SKB_FRAGS Willem de Bruijn
@ 2020-12-27  9:39 ` Michael S. Tsirkin
  1 sibling, 0 replies; 3+ messages in thread
From: Michael S. Tsirkin @ 2020-12-27  9:39 UTC (permalink / raw)
  To: wangyunjian
  Cc: willemdebruijn.kernel, netdev, jerry.lilijun, virtualization,
	xudingke, brian.huangbin, chenchanghu

On Thu, Dec 24, 2020 at 07:48:53PM +0800, wangyunjian wrote:
> From: Yunjian Wang <wangyunjian@huawei.com>
> 
> Currently the tun_napi_alloc_frags() function returns -ENOMEM when the
> number of iovs exceeds MAX_SKB_FRAGS + 1. However this is inappropriate,
> we should use -EMSGSIZE instead of -ENOMEM.
> 
> Fixes: 90e33d459407 ("tun: enable napi_gro_frags() for TUN/TAP driver")
> Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>

Acked-by: Michael S. Tsirkin <mst@redhat.com>

> ---
>  drivers/net/tun.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> index 2dc1988a8973..15c6dd7fb04c 100644
> --- a/drivers/net/tun.c
> +++ b/drivers/net/tun.c
> @@ -1365,7 +1365,7 @@ static struct sk_buff *tun_napi_alloc_frags(struct tun_file *tfile,
>  	int i;
>  
>  	if (it->nr_segs > MAX_SKB_FRAGS + 1)
> -		return ERR_PTR(-ENOMEM);
> +		return ERR_PTR(-EMSGSIZE);
>  
>  	local_bh_disable();
>  	skb = napi_get_frags(&tfile->napi);
> -- 
> 2.23.0

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH net] tun: fix return value when the number of iovs exceeds MAX_SKB_FRAGS
  2020-12-24 15:56 ` [PATCH net] tun: fix return value when the number of iovs exceeds MAX_SKB_FRAGS Willem de Bruijn
@ 2020-12-27 11:18   ` Michael S. Tsirkin
  0 siblings, 0 replies; 3+ messages in thread
From: Michael S. Tsirkin @ 2020-12-27 11:18 UTC (permalink / raw)
  To: Willem de Bruijn
  Cc: Network Development, wangyunjian, Lilijun (Jerry), virtualization,
	xudingke, huangbin (J), chenchanghu

On Thu, Dec 24, 2020 at 10:56:16AM -0500, Willem de Bruijn wrote:
> On Thu, Dec 24, 2020 at 6:51 AM wangyunjian <wangyunjian@huawei.com> wrote:
> >
> > From: Yunjian Wang <wangyunjian@huawei.com>
> >
> > Currently the tun_napi_alloc_frags() function returns -ENOMEM when the
> > number of iovs exceeds MAX_SKB_FRAGS + 1. However this is inappropriate,
> > we should use -EMSGSIZE instead of -ENOMEM.
> >
> > Fixes: 90e33d459407 ("tun: enable napi_gro_frags() for TUN/TAP driver")
> > Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
> 
> Acked-by: Willem de Bruijn <willemb@google.com>
> 
> It might be good to explain why the distinction matters: one denotes a
> transient failure that the caller (specifically vhost_net) can retry,
> the other a persistent failure due to bad packet geometry that should
> be dropped.

It would be good to have a definition of what constitutes a transient
failure. At the moment there's a proposed patch to vhost that
tests for 
	err == -EAGAIN || err == -ENOMEM || err == -ENOBUFS
and we'll likely add EIO to that.

Alternatively, I'm inclined to say any invalid input should
just return EINVAL except maybe for memory access errors
which traditionally are EFAULT.
Then vhost can handle any failure except EINVAL and EFAULT
as transient.

-- 
MST

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-12-27 11:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1608810533-8308-1-git-send-email-wangyunjian@huawei.com>
2020-12-24 15:56 ` [PATCH net] tun: fix return value when the number of iovs exceeds MAX_SKB_FRAGS Willem de Bruijn
2020-12-27 11:18   ` Michael S. Tsirkin
2020-12-27  9:39 ` Michael S. Tsirkin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).