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