diff options
Diffstat (limited to '')
-rw-r--r-- | net/8021q/vlan_netlink.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/8021q/vlan_netlink.c b/net/8021q/vlan_netlink.c index 0db85aeb119b..214532173536 100644 --- a/net/8021q/vlan_netlink.c +++ b/net/8021q/vlan_netlink.c @@ -182,11 +182,16 @@ static int vlan_newlink(struct net *src_net, struct net_device *dev, else if (dev->mtu > max_mtu) return -EINVAL; + /* Note: If this initial vlan_changelink() fails, we need + * to call vlan_dev_free_egress_priority() to free memory. + */ err = vlan_changelink(dev, tb, data, extack); + if (!err) err = register_vlan_dev(dev, extack); + if (err) - vlan_dev_uninit(dev); + vlan_dev_free_egress_priority(dev); return err; } |