Mon, Aug 13, 2012 at 09:04:21PM CEST, fbl@xxxxxxxxxx wrote: >On Mon, 13 Aug 2012 17:27:02 +0200 >Jiri Pirko <jiri@xxxxxxxxxxx> wrote: > >> Signed-off-by: Jiri Pirko <jiri@xxxxxxxxxxx> >> --- >> net/8021q/vlan.c | 10 +++++++++- >> 1 file changed, 9 insertions(+), 1 deletion(-) >> >> diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c >> index 9096bcb..739665e 100644 >> --- a/net/8021q/vlan.c >> +++ b/net/8021q/vlan.c >> @@ -105,6 +105,8 @@ void unregister_vlan_dev(struct net_device *dev, struct list_head *head) >> */ >> unregister_netdevice_queue(dev, head); >> >> + netdev_upper_dev_unlink(real_dev, dev); >> + >> if (grp->nr_vlan_devs == 0) >> vlan_gvrp_uninit_applicant(real_dev); >> >> @@ -162,9 +164,13 @@ int register_vlan_dev(struct net_device *dev) >> if (err < 0) >> goto out_uninit_applicant; >> >> + err = netdev_upper_dev_link(real_dev, dev); >> + if (err) >> + goto out_uninit_applicant; >> + >> err = register_netdevice(dev); >> if (err < 0) >> - goto out_uninit_applicant; >> + goto out_upper_dev_unlink; > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >see below: > >> >> /* Account for reference in struct vlan_dev_priv */ >> dev_hold(real_dev); >> @@ -180,6 +186,8 @@ int register_vlan_dev(struct net_device *dev) >> >> return 0; >> >> +upper_dev_unlink: >^^^^^^^^^^^^^^^^^^^ >should be out_upper_dev_unlink: fixed. Thanks! > >fbl > >> + netdev_upper_dev_unlink(real_dev, dev); >> out_uninit_applicant: >> if (grp->nr_vlan_devs == 0) >> vlan_gvrp_uninit_applicant(real_dev); >