Re: [BUG] 2.6.29-rc* QinQ vlan trunking regression

Patrick McHardy
2009-03-05T07:31:47Z

[-- Attachment #1: Type: text/plain, Size: 639 bytes --]

Patrick McHardy wrote:
> David Miller wrote:
>> From: Patrick McHardy <kaber@trash.net>
>> Date: Thu, 05 Mar 2009 08:12:50 +0100
>>
>>>> We probably need both fixes to cover everything.
>>>>
>>> Yes, just the second one still crashes. I'm about to retry using both.
>>
>> Here is the updated version just for the record:
>>
>> vlan: Fix vlan-in-vlan crashes.
>
> This still crashes. I'll have another look at the code.

This one combined with your patch fixes the crash. The code was calling
vlan_dev_neigh_setup recursively.

Signed-off-by: Patrick McHardy <kaber@trash.net>

(or Tested-by: in case you want to roll it into your patch).

[-- Attachment #2: x --]
[-- Type: text/plain, Size: 424 bytes --]

diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 4a19acd..1b34135 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -553,7 +553,7 @@ static int vlan_dev_neigh_setup(struct net_device *dev, struct neigh_parms *pa)
int err = 0;

if (netif_device_present(real_dev) && ops->ndo_neigh_setup)
- err = ops->ndo_neigh_setup(dev, pa);
+ err = ops->ndo_neigh_setup(real_dev, pa);

return err;
}