ieee802154: 6lowpan: earlier skb->dev switch
authorAlexander Aring <alex.aring@gmail.com>
Wed, 2 Sep 2015 12:21:24 +0000 (14:21 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 17 Sep 2015 11:20:03 +0000 (13:20 +0200)
We should change the skb->dev pointer earlier to the lowpan interface
Sometimes we call iphc_decompress which also use some netdev printout
functionality. This patch will change that the correct interface will be
displayed in this case, which should be the lowpan interface.

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 74d8fec51a0c45a37159762eb51256f688bd5acb..f9cb70b6749f39f4ccc77e61763a70b21c7759a0 100644 (file)
@@ -18,7 +18,6 @@
 static int lowpan_give_skb_to_device(struct sk_buff *skb,
                                     struct net_device *wdev)
 {
-       skb->dev = wdev->ieee802154_ptr->lowpan_dev;
        skb->protocol = htons(ETH_P_IPV6);
        skb->pkt_type = PACKET_HOST;
 
@@ -71,9 +70,11 @@ static int lowpan_rcv(struct sk_buff *skb, struct net_device *wdev,
        if (!ldev || !netif_running(ldev))
                goto drop;
 
+       /* Replacing skb->dev and followed rx handlers will manipulate skb. */
        skb = skb_share_check(skb, GFP_ATOMIC);
        if (!skb)
                goto drop;
+       skb->dev = ldev;
 
        if (ieee802154_hdr_peek_addrs(skb, &hdr) < 0)
                goto drop_skb;