X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=net%2Fieee802154%2F6lowpan_rtnl.c;h=fe6bd7a7108169138faf198fefcab7f3217e9c55;hb=8695a003a5f4f5bc88b915e1c4a56d954f810f6e;hp=1ae8a5628fb5b5e188926d8ae7e3d5e747fac092;hpb=65db611a5cc17182b62c0edc4bf31cf272d58304;p=firefly-linux-kernel-4.4.55.git diff --git a/net/ieee802154/6lowpan_rtnl.c b/net/ieee802154/6lowpan_rtnl.c index 1ae8a5628fb5..fe6bd7a71081 100644 --- a/net/ieee802154/6lowpan_rtnl.c +++ b/net/ieee802154/6lowpan_rtnl.c @@ -312,7 +312,7 @@ lowpan_xmit_fragmented(struct sk_buff *skb, struct net_device *dev, frag_hdr[0] |= LOWPAN_DISPATCH_FRAGN; frag_cap = round_down(payload_cap - LOWPAN_FRAGN_HEAD_SIZE, 8); - while (skb_unprocessed >= frag_cap) { + do { dgram_offset += frag_len; skb_offset += frag_len; skb_unprocessed -= frag_len; @@ -328,7 +328,7 @@ lowpan_xmit_fragmented(struct sk_buff *skb, struct net_device *dev, __func__, frag_tag, skb_offset); goto err; } - } + } while (skb_unprocessed > frag_cap); consume_skb(skb); return NET_XMIT_SUCCESS;