diff options
| author | Sven Eckelmann <sven@narfation.org> | 2026-02-16 11:20:29 +0100 |
|---|---|---|
| committer | Simon Wunderlich <sw@simonwunderlich.de> | 2026-02-21 13:01:55 +0100 |
| commit | cfc83a3c71517b59c1047db57da31e26a9dc2f33 (patch) | |
| tree | a31d63ea66a6d97311dae3486b0dba437537580f /include/linux/i2c/git@git.tavy.me:linux.git | |
| parent | 8f7aa3d3c7323f4ca2768a9e74ebbe359c4f8f88 (diff) | |
batman-adv: Avoid double-rtnl_lock ELP metric worker
batadv_v_elp_get_throughput() might be called when the RTNL lock is already
held. This could be problematic when the work queue item is cancelled via
cancel_delayed_work_sync() in batadv_v_elp_iface_disable(). In this case,
an rtnl_lock() would cause a deadlock.
To avoid this, rtnl_trylock() was used in this function to skip the
retrieval of the ethtool information in case the RTNL lock was already
held.
But for cfg80211 interfaces, batadv_get_real_netdev() was called - which
also uses rtnl_lock(). The approach for __ethtool_get_link_ksettings() must
also be used instead and the lockless version __batadv_get_real_netdev()
has to be called.
Cc: stable@vger.kernel.org
Fixes: 8c8ecc98f5c6 ("batman-adv: Drop unmanaged ELP metric worker")
Reported-by: Christian Schmidbauer <github@grische.xyz>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Tested-by: Sören Skaarup <freifunk_nordm4nn@gmx.de>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
Diffstat (limited to 'include/linux/i2c/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions
