patch-2.4.23 linux-2.4.23/net/8021q/vlan_dev.c
Next file: linux-2.4.23/net/8021q/vlanproc.c
Previous file: linux-2.4.23/net/8021q/vlan.c
Back to the patch index
Back to the overall index
-  Lines: 22
-  Date:
2003-11-28 10:26:21.000000000 -0800
-  Orig file: 
linux-2.4.22/net/8021q/vlan_dev.c
-  Orig date: 
2003-06-13 07:51:39.000000000 -0700
diff -urN linux-2.4.22/net/8021q/vlan_dev.c linux-2.4.23/net/8021q/vlan_dev.c
@@ -75,7 +75,11 @@
 static inline struct sk_buff *vlan_check_reorder_header(struct sk_buff *skb)
 {
 	if (VLAN_DEV_INFO(skb->dev)->flags & 1) {
-		skb = skb_share_check(skb, GFP_ATOMIC);
+		if (skb_shared(skb) || skb_cloned(skb)) {
+			struct sk_buff *nskb = skb_copy(skb, GFP_ATOMIC);
+			kfree_skb(skb);
+			skb = nskb;
+		}
 		if (skb) {
 			/* Lifted from Gleb's VLAN code... */
 			memmove(skb->data - ETH_HLEN,
@@ -171,7 +175,7 @@
 
 #ifdef VLAN_DEBUG
 		printk(VLAN_DBG "%s: dropping skb: %p because came in on wrong device, dev: %s  real_dev: %s, skb_dev: %s\n",
-			__FUNCTION__ skb, dev->name, 
+			__FUNCTION__, skb, dev->name, 
 			VLAN_DEV_INFO(skb->dev)->real_dev->name, 
 			skb->dev->name);
 #endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)