On Tuesday, 19 May 2026 09:02:18 CEST Sven Eckelmann wrote:
> @@ -505,6 +507,11 @@ batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, 
> const u8 *orig,
>                    "%s(): not found (%pM, %d), creating new entry\n", 
> __func__,
>                    orig, batadv_print_vid(vid));
>  
> +       bla_backbone_max_learned = 
> READ_ONCE(bat_priv->bla_backbone_max_learned);
> +       bla_backbone_learned = atomic_read(&bat_priv->bla_backbone_learned);
> +       if (bla_backbone_max_learned && bla_backbone_learned >= 
> bla_backbone_max_learned)
> +               return NULL;
> +
>         entry = kzalloc_obj(*entry, GFP_ATOMIC);
>         if (!entry)
>                 return NULL;

@Simon: remark from Sashiko, should we actually exempt own_gateway?


@@ -508,10 +508,12 @@ batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, 
const u8 *orig,
                   "%s(): not found (%pM, %d), creating new entry\n", __func__,
                   orig, batadv_print_vid(vid));
 
-       bla_backbone_max_learned = 
READ_ONCE(bat_priv->bla_backbone_max_learned);
-       bla_backbone_learned = atomic_read(&bat_priv->bla_backbone_learned);
-       if (bla_backbone_max_learned && bla_backbone_learned >= 
bla_backbone_max_learned)
-               return NULL;
+       if (!own_backbone) {
+               bla_backbone_max_learned = 
READ_ONCE(bat_priv->bla_backbone_max_learned);
+               bla_backbone_learned = 
atomic_read(&bat_priv->bla_backbone_learned);
+               if (bla_backbone_max_learned && bla_backbone_learned >= 
bla_backbone_max_learned)
+                       return NULL;
+       }
 
        entry = kzalloc_obj(*entry, GFP_ATOMIC);
        if (!entry)
@@ -539,7 +541,10 @@ batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, 
const u8 *orig,
        if (unlikely(hash_added != 0)) {
                /* hash failed, free the structure */
                kfree(entry);
-               atomic_dec(&bat_priv->bla_backbone_learned);
+
+               if (!own_backbone)
+                       atomic_dec(&bat_priv->bla_backbone_learned);
+
                return NULL;
        }
 
Regards,
        Sven

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to