The following commit has been merged in the master branch:
commit 855e43164e95bf6559ab2b53b28e0f95887ff099
Merge: 46a499aaf8c27476fd05e800f3e947bfd71aa724 
f12b69d8f22824a07f17c1399c99757072de73e0
Author: Jakub Kicinski <[email protected]>
Date:   Mon Oct 27 18:00:53 2025 -0700

    Merge tag 'batadv-net-pullrequest-20251024' of 
https://git.open-mesh.org/linux-merge
    
    Simon Wunderlich says:
    
    ====================
    Here is a batman-adv bugfix:
    
     - release references to inactive interfaces, by Sven Eckelmann
    
    * tag 'batadv-net-pullrequest-20251024' of 
https://git.open-mesh.org/linux-merge:
      batman-adv: Release references to inactive interfaces
    ====================
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>

diff --combined net/batman-adv/originator.c
index c84420cb410d5,ed89d7fd1e7f4..a662408ad8673
--- a/net/batman-adv/originator.c
+++ b/net/batman-adv/originator.c
@@@ -37,6 -37,7 +37,6 @@@
  #include "log.h"
  #include "multicast.h"
  #include "netlink.h"
 -#include "network-coding.h"
  #include "routing.h"
  #include "translation-table.h"
  
@@@ -763,11 -764,16 +763,16 @@@ int batadv_hardif_neigh_dump(struct sk_
        bat_priv = netdev_priv(mesh_iface);
  
        primary_if = batadv_primary_if_get_selected(bat_priv);
-       if (!primary_if || primary_if->if_status != BATADV_IF_ACTIVE) {
+       if (!primary_if) {
                ret = -ENOENT;
                goto out_put_mesh_iface;
        }
  
+       if (primary_if->if_status != BATADV_IF_ACTIVE) {
+               ret = -ENOENT;
+               goto out_put_primary_if;
+       }
+ 
        hard_iface = batadv_netlink_get_hardif(bat_priv, cb);
        if (IS_ERR(hard_iface) && PTR_ERR(hard_iface) != -ENONET) {
                ret = PTR_ERR(hard_iface);
@@@ -882,6 -888,9 +887,6 @@@ void batadv_orig_node_release(struct kr
        }
        spin_unlock_bh(&orig_node->vlan_list_lock);
  
 -      /* Free nc_nodes */
 -      batadv_nc_purge_orig(orig_node->bat_priv, orig_node, NULL);
 -
        call_rcu(&orig_node->rcu, batadv_orig_node_free_rcu);
  }
  
@@@ -955,6 -964,8 +960,6 @@@ struct batadv_orig_node *batadv_orig_no
        spin_lock_init(&orig_node->tt_lock);
        spin_lock_init(&orig_node->vlan_list_lock);
  
 -      batadv_nc_init_orig(orig_node);
 -
        /* extra reference for return */
        kref_init(&orig_node->refcount);
  
@@@ -1327,11 -1338,16 +1332,16 @@@ int batadv_orig_dump(struct sk_buff *ms
        bat_priv = netdev_priv(mesh_iface);
  
        primary_if = batadv_primary_if_get_selected(bat_priv);
-       if (!primary_if || primary_if->if_status != BATADV_IF_ACTIVE) {
+       if (!primary_if) {
                ret = -ENOENT;
                goto out_put_mesh_iface;
        }
  
+       if (primary_if->if_status != BATADV_IF_ACTIVE) {
+               ret = -ENOENT;
+               goto out_put_primary_if;
+       }
+ 
        hard_iface = batadv_netlink_get_hardif(bat_priv, cb);
        if (IS_ERR(hard_iface) && PTR_ERR(hard_iface) != -ENONET) {
                ret = PTR_ERR(hard_iface);

-- 
LinuxNextTracking

Reply via email to