[maint,1/6] batman-adv: Clean up untagged vlan when destroying via rtnl-link
Commit Message
The untagged vlan object is only destroyed when the interface is removed
via the legacy sysfs interface. But it also has to be destroyed when the
standard rtnl-link interface is used.
Fixes: 952cebb57518 ("batman-adv: add per VLAN interface attribute framework")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Cc: Antonio Quartulli <a@unstable.cc>
---
net/batman-adv/soft-interface.c | 9 +++++++++
1 file changed, 9 insertions(+)
Comments
On Sat, May 28, 2016 at 02:38:26PM +0200, Sven Eckelmann wrote:
> The untagged vlan object is only destroyed when the interface is removed
> via the legacy sysfs interface. But it also has to be destroyed when the
> standard rtnl-link interface is used.
>
> Fixes: 952cebb57518 ("batman-adv: add per VLAN interface attribute framework")
> Signed-off-by: Sven Eckelmann <sven@narfation.org>
> Cc: Antonio Quartulli <a@unstable.cc>
Acked-by: Antonio Quartulli <a@unstable.cc>
On Monday, June 06, 2016 23:44:02 Antonio Quartulli wrote:
> On Sat, May 28, 2016 at 02:38:26PM +0200, Sven Eckelmann wrote:
> > The untagged vlan object is only destroyed when the interface is removed
> > via the legacy sysfs interface. But it also has to be destroyed when the
> > standard rtnl-link interface is used.
> >
> >
> >
> > Fixes: 952cebb57518 ("batman-adv: add per VLAN interface attribute
> > framework") Signed-off-by: Sven Eckelmann <sven@narfation.org>
> > Cc: Antonio Quartulli <a@unstable.cc>
>
> Acked-by: Antonio Quartulli <a@unstable.cc>
Applied in revision e721749.
Thanks,
Marek
@@ -1040,7 +1040,9 @@ void batadv_softif_destroy_sysfs(struct net_device *soft_iface)
static void batadv_softif_destroy_netlink(struct net_device *soft_iface,
struct list_head *head)
{
+ struct batadv_priv *bat_priv = netdev_priv(soft_iface);
struct batadv_hard_iface *hard_iface;
+ struct batadv_softif_vlan *vlan;
list_for_each_entry(hard_iface, &batadv_hardif_list, list) {
if (hard_iface->soft_iface == soft_iface)
@@ -1048,6 +1050,13 @@ static void batadv_softif_destroy_netlink(struct net_device *soft_iface,
BATADV_IF_CLEANUP_KEEP);
}
+ /* destroy the "untagged" VLAN */
+ vlan = batadv_softif_vlan_get(bat_priv, BATADV_NO_FLAGS);
+ if (vlan) {
+ batadv_softif_destroy_vlan(bat_priv, vlan);
+ batadv_softif_vlan_put(vlan);
+ }
+
batadv_sysfs_del_meshif(soft_iface);
unregister_netdevice_queue(soft_iface, head);
}