[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d54f0c6dcf224273ae3fb4fd0d351755@nokia-sbell.com>
Date: Tue, 20 Mar 2018 05:30:58 +0000
From: "Yuan, Linyu (NSB - CN/Shanghai)" <linyu.yuan@...ia-sbell.com>
To: Yonghong Song <yhs@...com>,
"edumazet@...gle.com" <edumazet@...gle.com>,
"ast@...com" <ast@...com>,
"daniel@...earbox.net" <daniel@...earbox.net>,
"diptanu@...com" <diptanu@...com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>
CC: "kernel-team@...com" <kernel-team@...com>
Subject: RE: [PATCH net-next 1/2] net: permit skb_segment on head_frag
frag_list skb
> -----Original Message-----
> From: netdev-owner@...r.kernel.org [mailto:netdev-owner@...r.kernel.org]
> On Behalf Of Yonghong Song
> Sent: Tuesday, March 20, 2018 1:16 PM
> To: edumazet@...gle.com; ast@...com; daniel@...earbox.net;
> diptanu@...com; netdev@...r.kernel.org
> Cc: kernel-team@...com
> Subject: [PATCH net-next 1/2] net: permit skb_segment on head_frag frag_list
> skb
>
>
> while (pos < offset + len) {
> if (i >= nfrags) {
> - BUG_ON(skb_headlen(list_skb));
> + if (skb_headlen(list_skb) && check_list_skb == list_skb) {
Here cause next BUG_ON always false.
> + } else {
> + BUG_ON(skb_headlen(list_skb) && check_list_skb ==
> list_skb);
Just according code logic, no need BUG_ON, right?
>
> - i = 0;
> - nfrags = skb_shinfo(list_skb)->nr_frags;
> - frag = skb_shinfo(list_skb)->frags;
> - frag_skb = list_skb;
> + i = 0;
> + nfrags = skb_shinfo(list_skb)->nr_frags;
> + frag = skb_shinfo(list_skb)->frags;
> + frag_skb = list_skb;
>
> - BUG_ON(!nfrags);
> + BUG_ON(!nfrags);
>
> - if (skb_orphan_frags(frag_skb, GFP_ATOMIC) ||
> - skb_zerocopy_clone(nskb, frag_skb,
> - GFP_ATOMIC))
> - goto err;
> + if (skb_orphan_frags(frag_skb, GFP_ATOMIC) ||
> + skb_zerocopy_clone(nskb, frag_skb,
> GFP_ATOMIC))
> + goto err;
>
> - list_skb = list_skb->next;
> + list_skb = list_skb->next;
> + check_list_skb = list_skb;
> + }
> }
>
> if (unlikely(skb_shinfo(nskb)->nr_frags >=
> --
> 2.9.5
Powered by blists - more mailing lists