diff mbox series

xen/netfront: tolerate frags with no data

Message ID 20181218150619.6964-1-jgross@suse.com
State Accepted, archived
Delegated to: David Miller
Headers show
Series xen/netfront: tolerate frags with no data | expand

Commit Message

Jürgen Groß Dec. 18, 2018, 3:06 p.m. UTC
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.

Cc: stable@vger.kernel.org
Tested-by: Dietmar Hahn <dietmar.hahn@ts.fujitsu.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 drivers/net/xen-netfront.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Miller Dec. 19, 2018, 6 a.m. UTC | #1
From: Juergen Gross <jgross@suse.com>
Date: Tue, 18 Dec 2018 16:06:19 +0100

> 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>

Applied and queued up for -stable.

But many of these BUG's in the driver should be converted to
WARNs and recovery code added.
Jürgen Groß Dec. 19, 2018, 6:02 a.m. UTC | #2
On 19/12/2018 07:00, David Miller wrote:
> From: Juergen Gross <jgross@suse.com>
> Date: Tue, 18 Dec 2018 16:06:19 +0100
> 
>> 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>
> 
> Applied and queued up for -stable.
> 
> But many of these BUG's in the driver should be converted to
> WARNs and recovery code added.
> 

Right, but that will be no stable material then. Will start that effort
after Christmas.


Juergen
diff mbox series

Patch

diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index f17f602e6171..5b97cc946d70 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -905,7 +905,7 @@  static RING_IDX xennet_fill_frags(struct netfront_queue *queue,
 		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)) {