Bug #215 ยป 0001-batman-adv-fix-kernel-crash-due-to-missing-NULL-chec.patch
| soft-interface.c | ||
|---|---|---|
|
*/
|
||
|
void batadv_softif_vlan_free_ref(struct batadv_softif_vlan *vlan)
|
||
|
{
|
||
|
if (!vlan)
|
||
|
return;
|
||
|
if (atomic_dec_and_test(&vlan->refcount)) {
|
||
|
spin_lock_bh(&vlan->bat_priv->softif_vlan_list_lock);
|
||
|
hlist_del_rcu(&vlan->list);
|
||
| translation-table.c | ||
|---|---|---|
|
/* increase the refcounter of the related vlan */
|
||
|
vlan = batadv_softif_vlan_get(bat_priv, vid);
|
||
|
if (!vlan)
|
||
|
goto out;
|
||
|
batadv_dbg(BATADV_DBG_TT, bat_priv,
|
||
|
"Creating new local tt entry: %pM (vid: %d, ttvn: %d)\n",
|
||
| ... | ... | |
|
/* decrease the reference held for this vlan */
|
||
|
vlan = batadv_softif_vlan_get(bat_priv, vid);
|
||
|
if (!vlan)
|
||
|
goto out;
|
||
|
batadv_softif_vlan_free_ref(vlan);
|
||
|
batadv_softif_vlan_free_ref(vlan);
|
||
| ... | ... | |
|
/* decrease the reference held for this vlan */
|
||
|
vlan = batadv_softif_vlan_get(bat_priv,
|
||
|
tt_common_entry->vid);
|
||
|
batadv_softif_vlan_free_ref(vlan);
|
||
|
batadv_softif_vlan_free_ref(vlan);
|
||
|
if (vlan) {
|
||
|
batadv_softif_vlan_free_ref(vlan);
|
||
|
batadv_softif_vlan_free_ref(vlan);
|
||
|
}
|
||
|
batadv_tt_local_entry_free_ref(tt_local);
|
||
|
}
|
||
| ... | ... | |
|
/* decrease the reference held for this vlan */
|
||
|
vlan = batadv_softif_vlan_get(bat_priv, tt_common->vid);
|
||
|
batadv_softif_vlan_free_ref(vlan);
|
||
|
batadv_softif_vlan_free_ref(vlan);
|
||
|
if (vlan) {
|
||
|
batadv_softif_vlan_free_ref(vlan);
|
||
|
batadv_softif_vlan_free_ref(vlan);
|
||
|
}
|
||
|
batadv_tt_local_entry_free_ref(tt_local);
|
||
|
}
|
||