Christian Darnell wrote: > -----Original Message----- > >>From: Tommy Christensen [mailto:tommy.christensen@xxxxxxxxx] >>Sent: Wednesday, October 08, 2003 10:09 AM >>To: Christian Darnell >>Cc: 'Linux 802.1Q VLAN'; Bart De Schuymer; netdev@xxxxxxxxxxx; 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 <greearb@xxxxxxxxxxxxxxx> Candela Technologies Inc http://www.candelatech.com