From a509d45369db93fd3a7570646639ec768325ad45 Mon Sep 17 00:00:00 2001 From: Sven Eckelmann Date: Tue, 22 Aug 2023 18:26:35 +0200 Subject: [PATCH] batman-adv: Fix lock assert after fragmentation change The automatic recalculation of the maximum allowed MTU is usually triggered by code sections which are already rtnl lock protected by callers outside of batman-adv. But when the fragmentation setting is changed via batman-adv's own batadv genl family, then the rtnl lock is not yet taken. But dev_set_mtu requires that the caller holds the rtnl lock because it uses netdevice notifiers. And this code will then fail the check for this lock: RTNL: assertion failed at net/core/dev.c (1953) Fixes: 12577be7ed67 ("batman-adv: Merge bugfixes from 2023.2") Signed-off-by: Sven Eckelmann --- ...x-batadv_v_ogm_aggr_send-memory-leak.patch | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 batman-adv/patches/0020-batman-adv-Fix-batadv_v_ogm_aggr_send-memory-leak.patch diff --git a/batman-adv/patches/0020-batman-adv-Fix-batadv_v_ogm_aggr_send-memory-leak.patch b/batman-adv/patches/0020-batman-adv-Fix-batadv_v_ogm_aggr_send-memory-leak.patch new file mode 100644 index 000000000..954d9187b --- /dev/null +++ b/batman-adv/patches/0020-batman-adv-Fix-batadv_v_ogm_aggr_send-memory-leak.patch @@ -0,0 +1,36 @@ +From: Sven Eckelmann +Date: Mon, 21 Aug 2023 21:48:48 +0200 +Subject: batman-adv: Hold rtnl lock during MTU update via netlink + +The automatic recalculation of the maximum allowed MTU is usually triggered +by code sections which are already rtnl lock protected by callers outside +of batman-adv. But when the fragmentation setting is changed via +batman-adv's own batadv genl family, then the rtnl lock is not yet taken. + +But dev_set_mtu requires that the caller holds the rtnl lock because it +uses netdevice notifiers. And this code will then fail the check for this +lock: + + RTNL: assertion failed at net/core/dev.c (1953) + +Cc: stable@vger.kernel.org +Reported-by: syzbot+f8812454d9b3ac00d282@syzkaller.appspotmail.com +Fixes: 27c4d7c1c7fa ("batman-adv: Trigger events for auto adjusted MTU") +Reviewed-by: Simon Horman +Signed-off-by: Sven Eckelmann +Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/aeb35331aa9a17f9affd84c1a5b020aeb4a976f4 +(cherry picked from commit ae89872e52a07063b652f3db12f5e7d599f266fe) + +--- a/net/batman-adv/netlink.c ++++ b/net/batman-adv/netlink.c +@@ -494,7 +494,10 @@ static int batadv_netlink_set_mesh(struc + attr = info->attrs[BATADV_ATTR_FRAGMENTATION_ENABLED]; + + atomic_set(&bat_priv->fragmentation, !!nla_get_u8(attr)); ++ ++ rtnl_lock(); + batadv_update_min_mtu(bat_priv->soft_iface); ++ rtnl_unlock(); + } + + if (info->attrs[BATADV_ATTR_GW_BANDWIDTH_DOWN]) {