Jason Wang
2020-Dec-25 06:18 UTC
[PATCH net v2] tun: fix return value when the number of iovs exceeds MAX_SKB_FRAGS
On 2020/12/25 ??10:52, wangyunjian wrote:> From: Yunjian Wang <wangyunjian at 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. > > The following distinctions are matters: > 1. the caller need to drop the bad packet when -EMSGSIZE is returned, > which means meeting a persistent failure. > 2. the caller can try again when -ENOMEM is returned, which means > meeting a transient failure. > > Fixes: 90e33d459407 ("tun: enable napi_gro_frags() for TUN/TAP driver") > Signed-off-by: Yunjian Wang <wangyunjian at huawei.com> > Acked-by: Willem de Bruijn <willemb at google.com> > --- > v2: > * update commit log suggested by Willem de Bruijn > --- > 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);Acked-by: Jason Wang <jasowang at redhat.com>