diff options
Diffstat (limited to 'net/ethernet/eth.c')
-rw-r--r-- | net/ethernet/eth.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index 61ec0329316c..215c83986a9d 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c | |||
@@ -158,7 +158,6 @@ EXPORT_SYMBOL(eth_rebuild_header); | |||
158 | __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) | 158 | __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) |
159 | { | 159 | { |
160 | struct ethhdr *eth; | 160 | struct ethhdr *eth; |
161 | unsigned char *rawp; | ||
162 | 161 | ||
163 | skb->dev = dev; | 162 | skb->dev = dev; |
164 | skb_reset_mac_header(skb); | 163 | skb_reset_mac_header(skb); |
@@ -199,15 +198,13 @@ __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) | |||
199 | if (ntohs(eth->h_proto) >= 1536) | 198 | if (ntohs(eth->h_proto) >= 1536) |
200 | return eth->h_proto; | 199 | return eth->h_proto; |
201 | 200 | ||
202 | rawp = skb->data; | ||
203 | |||
204 | /* | 201 | /* |
205 | * This is a magic hack to spot IPX packets. Older Novell breaks | 202 | * This is a magic hack to spot IPX packets. Older Novell breaks |
206 | * the protocol design and runs IPX over 802.3 without an 802.2 LLC | 203 | * the protocol design and runs IPX over 802.3 without an 802.2 LLC |
207 | * layer. We look for FFFF which isn't a used 802.2 SSAP/DSAP. This | 204 | * layer. We look for FFFF which isn't a used 802.2 SSAP/DSAP. This |
208 | * won't work for fault tolerant netware but does for the rest. | 205 | * won't work for fault tolerant netware but does for the rest. |
209 | */ | 206 | */ |
210 | if (*(unsigned short *)rawp == 0xFFFF) | 207 | if (skb->len >= 2 && *(unsigned short *)(skb->data) == 0xFFFF) |
211 | return htons(ETH_P_802_3); | 208 | return htons(ETH_P_802_3); |
212 | 209 | ||
213 | /* | 210 | /* |