|
@@ -522,6 +522,7 @@ int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
|
|
|
goto err_upper;
|
|
|
}
|
|
|
|
|
|
+ kref_get(&hard_iface->refcount);
|
|
|
hard_iface->batman_adv_ptype.type = ethertype;
|
|
|
hard_iface->batman_adv_ptype.func = batadv_batman_skb_recv;
|
|
|
hard_iface->batman_adv_ptype.dev = hard_iface->net_dev;
|
|
@@ -583,6 +584,7 @@ void batadv_hardif_disable_interface(struct batadv_hard_iface *hard_iface,
|
|
|
batadv_info(hard_iface->soft_iface, "Removing interface: %s\n",
|
|
|
hard_iface->net_dev->name);
|
|
|
dev_remove_pack(&hard_iface->batman_adv_ptype);
|
|
|
+ batadv_hardif_put(hard_iface);
|
|
|
|
|
|
bat_priv->num_ifaces--;
|
|
|
batadv_orig_hash_del_if(hard_iface, bat_priv->num_ifaces);
|