|
@@ -1451,7 +1451,7 @@ static inline void net_timestamp(struct sk_buff *skb)
|
|
|
*
|
|
|
* return values:
|
|
|
* NET_RX_SUCCESS (no congestion)
|
|
|
- * NET_RX_DROP (packet was dropped)
|
|
|
+ * NET_RX_DROP (packet was dropped, but freed)
|
|
|
*
|
|
|
* dev_forward_skb can be used for injecting an skb from the
|
|
|
* start_xmit function of one device into the receive queue
|
|
@@ -1465,12 +1465,11 @@ int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
|
|
|
{
|
|
|
skb_orphan(skb);
|
|
|
|
|
|
- if (!(dev->flags & IFF_UP))
|
|
|
- return NET_RX_DROP;
|
|
|
-
|
|
|
- if (skb->len > (dev->mtu + dev->hard_header_len))
|
|
|
+ if (!(dev->flags & IFF_UP) ||
|
|
|
+ (skb->len > (dev->mtu + dev->hard_header_len))) {
|
|
|
+ kfree_skb(skb);
|
|
|
return NET_RX_DROP;
|
|
|
-
|
|
|
+ }
|
|
|
skb_set_dev(skb, dev);
|
|
|
skb->tstamp.tv64 = 0;
|
|
|
skb->pkt_type = PACKET_HOST;
|