diff --git a/drivers/net/defxx.c b/drivers/net/defxx.c
index 07d2731c1aa8f45e04b0c86a9c20744603b5fc50..8d29fae1c71c9784551b6002b2156f239fca2961 100644
--- a/drivers/net/defxx.c
+++ b/drivers/net/defxx.c
@@ -3096,8 +3096,6 @@ static void dfx_rcv_queue_process(
 
 					skb_reserve(skb,3);		/* adjust data field so that it points to FC byte */
 					skb_put(skb, pkt_len);		/* pass up packet length, NOT including CRC */
-					skb->dev = bp->dev;		/* pass up device pointer */
-
 					skb->protocol = fddi_type_trans(skb, bp->dev);
 					bp->rcv_total_bytes += skb->len;
 					netif_rx(skb);
diff --git a/drivers/net/rrunner.c b/drivers/net/rrunner.c
index d81536f90df62e10aefd98e83f597f663e5d925c..3a4fce384504a8c5c673a16eba09a432335b84ed 100644
--- a/drivers/net/rrunner.c
+++ b/drivers/net/rrunner.c
@@ -1029,7 +1029,6 @@ static void rx_int(struct net_device *dev, u32 rxlimit, u32 index)
 					goto defer;
 				}
 			}
-			skb->dev = dev;
 			skb->protocol = hippi_type_trans(skb, dev);
 
 			netif_rx(skb);		/* send it up */
diff --git a/drivers/net/skfp/skfddi.c b/drivers/net/skfp/skfddi.c
index 9733a11c61462bbaae5dd3fcf386736dbc397d79..064e7c21c01d292ebb16436661102865f3857333 100644
--- a/drivers/net/skfp/skfddi.c
+++ b/drivers/net/skfp/skfddi.c
@@ -1680,7 +1680,6 @@ void mac_drv_rx_complete(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
 	rxd->rxd_os.skb = NULL;
 	skb_trim(skb, len);
 	skb->protocol = fddi_type_trans(skb, bp->dev);
-	skb->dev = bp->dev;	/* pass up device pointer */
 
 	netif_rx(skb);
 	bp->dev->last_rx = jiffies;
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
index ecca1046714efd213f57fce49a69bca391faf047..1c23e187a3bafe4a76d0a132183bfb48605d5033 100644
--- a/drivers/s390/net/lcs.c
+++ b/drivers/s390/net/lcs.c
@@ -1784,7 +1784,6 @@ lcs_get_skb(struct lcs_card *card, char *skb_data, unsigned int skb_len)
 		card->stats.rx_dropped++;
 		return;
 	}
-	skb->dev = card->dev;
 	memcpy(skb_put(skb, skb_len), skb_data, skb_len);
 	skb->protocol =	card->lan_type_trans(skb, card->dev);
 	card->stats.rx_bytes += skb_len;
diff --git a/net/802/fddi.c b/net/802/fddi.c
index 8c86216b1c8506137ec84e10c405d0f6b1539fa3..f8a0c9f6fec90f9ba84229959457c2d1ffcb15d4 100644
--- a/net/802/fddi.c
+++ b/net/802/fddi.c
@@ -130,6 +130,7 @@ __be16 fddi_type_trans(struct sk_buff *skb, struct net_device *dev)
 	 * to start of packet data.  Assume 802.2 SNAP frames for now.
 	 */
 
+	skb->dev = dev;
 	skb->mac.raw = skb->data;	/* point to frame control (FC) */
 
 	if(fddi->hdr.llc_8022_1.dsap==0xe0)
diff --git a/net/802/hippi.c b/net/802/hippi.c
index 35dd938cff95133b2bcf9076e2e553fb8eb50d4c..138302c14ee605c84cca9fa3760c0826b91d1f42 100644
--- a/net/802/hippi.c
+++ b/net/802/hippi.c
@@ -126,14 +126,14 @@ __be16 hippi_type_trans(struct sk_buff *skb, struct net_device *dev)
 {
 	struct hippi_hdr *hip;
 
-	hip = (struct hippi_hdr *) skb->data;
-
 	/*
 	 * This is actually wrong ... question is if we really should
 	 * set the raw address here.
 	 */
-	 skb->mac.raw = skb->data;
-	 skb_pull(skb, HIPPI_HLEN);
+	skb->dev = dev;
+	skb->mac.raw = skb->data;
+	hip = (struct hippi_hdr *)skb->mac.raw;
+	skb_pull(skb, HIPPI_HLEN);
 
 	/*
 	 * No fancy promisc stuff here now.