| From foo@baz Fri Jan 4 20:27:35 CET 2019 |
| From: Juergen Gross <jgross@suse.com> |
| Date: Tue, 18 Dec 2018 16:06:19 +0100 |
| Subject: xen/netfront: tolerate frags with no data |
| |
| From: Juergen Gross <jgross@suse.com> |
| |
| [ Upstream commit d81c5054a5d1d4999c7cdead7636b6cd4af83d36 ] |
| |
| At least old Xen net backends seem to send frags with no real data |
| sometimes. In case such a fragment happens to occur with the frag limit |
| already reached the frontend will BUG currently even if this situation |
| is easily recoverable. |
| |
| Modify the BUG_ON() condition accordingly. |
| |
| Tested-by: Dietmar Hahn <dietmar.hahn@ts.fujitsu.com> |
| Signed-off-by: Juergen Gross <jgross@suse.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/xen-netfront.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/net/xen-netfront.c |
| +++ b/drivers/net/xen-netfront.c |
| @@ -903,7 +903,7 @@ static RING_IDX xennet_fill_frags(struct |
| if (skb_shinfo(skb)->nr_frags == MAX_SKB_FRAGS) { |
| unsigned int pull_to = NETFRONT_SKB_CB(skb)->pull_to; |
| |
| - BUG_ON(pull_to <= skb_headlen(skb)); |
| + BUG_ON(pull_to < skb_headlen(skb)); |
| __pskb_pull_tail(skb, pull_to - skb_headlen(skb)); |
| } |
| if (unlikely(skb_shinfo(skb)->nr_frags >= MAX_SKB_FRAGS)) { |