ieee802154: 6lowpan: trivial checks at first
authorAlexander Aring <alex.aring@gmail.com>
Wed, 2 Sep 2015 12:21:23 +0000 (14:21 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 17 Sep 2015 11:20:03 +0000 (13:20 +0200)
This patch moves some trivial checks at first before calling
skb_share_check which could do some memcpy if the buffer is shared.

Reviewed-by: Stefan Schmidt <stefan@osg.samsung.com>
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/ieee802154/6lowpan/rx.c

index 4ddf6944503204b9269b52af673efd513b053d75..74d8fec51a0c45a37159762eb51256f688bd5acb 100644 (file)
@@ -63,7 +63,8 @@ static int lowpan_rcv(struct sk_buff *skb, struct net_device *wdev,
        struct net_device *ldev;
        int ret;
 
-       if (wdev->type != ARPHRD_IEEE802154)
+       if (wdev->type != ARPHRD_IEEE802154 ||
+           skb->pkt_type == PACKET_OTHERHOST)
                goto drop;
 
        ldev = wdev->ieee802154_ptr->lowpan_dev;
@@ -74,9 +75,6 @@ static int lowpan_rcv(struct sk_buff *skb, struct net_device *wdev,
        if (!skb)
                goto drop;
 
-       if (skb->pkt_type == PACKET_OTHERHOST)
-               goto drop_skb;
-
        if (ieee802154_hdr_peek_addrs(skb, &hdr) < 0)
                goto drop_skb;