net: Fix zero-copy head len calculation.
[sfrench/cifs-2.6.git] / net / core / skbuff.c
index 0fe97d6607902a22091b7ee6762a256d4e91178f..fc7942c0dddc368c48260bbbb1637c6bcb9619b4 100644 (file)
@@ -3022,8 +3022,11 @@ skb_zerocopy_headlen(const struct sk_buff *from)
 
        if (!from->head_frag ||
            skb_headlen(from) < L1_CACHE_BYTES ||
-           skb_shinfo(from)->nr_frags >= MAX_SKB_FRAGS)
+           skb_shinfo(from)->nr_frags >= MAX_SKB_FRAGS) {
                hlen = skb_headlen(from);
+               if (!hlen)
+                       hlen = from->len;
+       }
 
        if (skb_has_frag_list(from))
                hlen = from->len;