]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
batman-adv: bla: prevent use-after-free when deleting claims
authorSven Eckelmann <sven@narfation.org>
Wed, 6 May 2026 20:20:50 +0000 (22:20 +0200)
committerSven Eckelmann <sven@narfation.org>
Fri, 8 May 2026 12:28:51 +0000 (14:28 +0200)
When batadv_bla_del_backbone_claims() removes all claims for a backbone, it
does this by dropping the link entry in the hash list. This list entry
itself was one of the references which need to be dropped at the same time
via batadv_claim_put().

But the batadv_claim_put() must not be done before the last access to the
claim object in this function. Otherwise the claim might be freed already
by the batadv_claim_release() function before the list entry was dropped.

Cc: stable@kernel.org
Fixes: 23721387c409 ("batman-adv: add basic bridge loop avoidance code")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
net/batman-adv/bridge_loop_avoidance.c

index 51fe028b90881e8ff6d03e3eef32dde290d9dffc..8b77dd2ecfa419c27fe6f85de1e23913e499ca39 100644 (file)
@@ -318,8 +318,8 @@ batadv_bla_del_backbone_claims(struct batadv_bla_backbone_gw *backbone_gw)
                        if (claim->backbone_gw != backbone_gw)
                                continue;
 
-                       batadv_claim_put(claim);
                        hlist_del_rcu(&claim->hash_entry);
+                       batadv_claim_put(claim);
                }
                spin_unlock_bh(list_lock);
        }