caif: use pskb_put() instead of reimplementing its functionality
authorMathias Krause <mathias.krause@secunet.com>
Thu, 7 Nov 2013 13:18:25 +0000 (14:18 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 8 Nov 2013 00:28:59 +0000 (19:28 -0500)
Also remove the warning for fragmented packets -- skb_cow_data() will
linearize the buffer, removing all fragments.

Signed-off-by: Mathias Krause <mathias.krause@secunet.com>
Cc: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/caif/cfpkt_skbuff.c

index 6493351f39c6192b20a7a31e94c9b0cbb5268747..1be0b521ac490143e60e3b2d5b02d7fd68c24087 100644 (file)
@@ -203,20 +203,10 @@ int cfpkt_add_body(struct cfpkt *pkt, const void *data, u16 len)
                        PKT_ERROR(pkt, "cow failed\n");
                        return -EPROTO;
                }
-               /*
-                * Is the SKB non-linear after skb_cow_data()? If so, we are
-                * going to add data to the last SKB, so we need to adjust
-                * lengths of the top SKB.
-                */
-               if (lastskb != skb) {
-                       pr_warn("Packet is non-linear\n");
-                       skb->len += len;
-                       skb->data_len += len;
-               }
        }
 
        /* All set to put the last SKB and optionally write data there. */
-       to = skb_put(lastskb, len);
+       to = pskb_put(skb, lastskb, len);
        if (likely(data))
                memcpy(to, data, len);
        return 0;