Christian Darnell wrote:
-----Original Message-----

From: Tommy Christensen [mailto:[EMAIL PROTECTED]
Sent: Wednesday, October 08, 2003 10:09 AM
To: Christian Darnell
Cc: 'Linux 802.1Q VLAN'; Bart De Schuymer; [EMAIL PROTECTED]; bridge
Subject: Re: [Bridge] RE: [VLAN] Re: [PATCH/RFC] Let {ip, arp}tables
"see" bridged VLAN tagged{I,AR}P packets



This is because the VLAN code is mangling shared data.
You need to do something like this:


--- linux-2.4/net/8021q/vlan_dev.c.org 2003-02-25 15:23:09.000000000 +0100 +++ linux-2.4/net/8021q/vlan_dev.c 2003-10-07 16:01:29.000000000 +0200 @@ -75,7 +75,12 @@ 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; + nskb = skb_copy(skb, GFP_ATOMIC); + kfree_skb(skb); + skb = nskb; + }

Thanks for catching that!


So, what good is skb_share_check then?
Maybe we should have a skb_share_or_cloned_check() ?

Ben


-- Ben Greear <[EMAIL PROTECTED]> Candela Technologies Inc http://www.candelatech.com


_______________________________________________ Bridge mailing list [EMAIL PROTECTED] http://lists.osdl.org/mailman/listinfo/bridge

Reply via email to