Message ID | 20250207095823.26043-2-sw@simonwunderlich.de (mailing list archive) |
---|---|
State | Accepted |
Commit | ccb7276a6d26d6f8416e315b43b45e15ee7f29e2 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [1/4] batman-adv: fix panic during interface removal | expand |
Hello: This series was applied to netdev/net.git (main) by Simon Wunderlich <sw@simonwunderlich.de>: On Fri, 7 Feb 2025 10:58:20 +0100 you wrote: > From: Andy Strohman <andrew@andrewstrohman.com> > > Reference counting is used to ensure that > batadv_hardif_neigh_node and batadv_hard_iface > are not freed before/during > batadv_v_elp_throughput_metric_update work is > finished. > > [...] Here is the summary with links: - [1/4] batman-adv: fix panic during interface removal https://git.kernel.org/netdev/net/c/ccb7276a6d26 - [2/4] batman-adv: Ignore neighbor throughput metrics in error case https://git.kernel.org/netdev/net/c/e7e34ffc976a - [3/4] batman-adv: Drop unmanaged ELP metric worker https://git.kernel.org/netdev/net/c/8c8ecc98f5c6 - [4/4] batman-adv: Fix incorrect offset in batadv_tt_tvlv_ogm_handler_v1() https://git.kernel.org/netdev/net/c/f4c9c2cc827d You are awesome, thank you!
diff --git a/net/batman-adv/bat_v_elp.c b/net/batman-adv/bat_v_elp.c index 1d704574e6bf..fbf499bcc671 100644 --- a/net/batman-adv/bat_v_elp.c +++ b/net/batman-adv/bat_v_elp.c @@ -66,12 +66,19 @@ static void batadv_v_elp_start_timer(struct batadv_hard_iface *hard_iface) static u32 batadv_v_elp_get_throughput(struct batadv_hardif_neigh_node *neigh) { struct batadv_hard_iface *hard_iface = neigh->if_incoming; + struct net_device *soft_iface = hard_iface->soft_iface; struct ethtool_link_ksettings link_settings; struct net_device *real_netdev; struct station_info sinfo; u32 throughput; int ret; + /* don't query throughput when no longer associated with any + * batman-adv interface + */ + if (!soft_iface) + return BATADV_THROUGHPUT_DEFAULT_VALUE; + /* if the user specified a customised value for this interface, then * return it directly */ @@ -141,7 +148,7 @@ static u32 batadv_v_elp_get_throughput(struct batadv_hardif_neigh_node *neigh) default_throughput: if (!(hard_iface->bat_v.flags & BATADV_WARNING_DEFAULT)) { - batadv_info(hard_iface->soft_iface, + batadv_info(soft_iface, "WiFi driver or ethtool info does not provide information about link speeds on interface %s, therefore defaulting to hardcoded throughput values of %u.%1u Mbps. Consider overriding the throughput manually or checking your driver.\n", hard_iface->net_dev->name, BATADV_THROUGHPUT_DEFAULT_VALUE / 10,