diff options
| author | Simon Wunderlich <sw@simonwunderlich.de> | 2023-08-23 09:14:28 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-23 09:14:28 +0200 |
| commit | d86c0c24c89ea15621f7b0252770da97eff6060c (patch) | |
| tree | 534bb5c6f5589c20405e4cb261c2fd229183575d | |
| parent | 6f6bcba66367599e30dc3d536558526d1f12120d (diff) | |
| parent | 364379c056ca41a77ae62e5ce4fb0d7d8e8e8459 (diff) | |
Merge pull request #1015 from ecsv/batman-adv-2023.2
batman-adv: Fix lock assert after fragmentation change
| -rw-r--r-- | batman-adv/Makefile | 2 | ||||
| -rw-r--r-- | batman-adv/patches/0003-batman-adv-Hold-rtnl-lock-during-MTU-update-via-netl.patch | 34 |
2 files changed, 35 insertions, 1 deletions
diff --git a/batman-adv/Makefile b/batman-adv/Makefile index f00bbb5..84adf6e 100644 --- a/batman-adv/Makefile +++ b/batman-adv/Makefile @@ -4,7 +4,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=batman-adv PKG_VERSION:=2023.2 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION) diff --git a/batman-adv/patches/0003-batman-adv-Hold-rtnl-lock-during-MTU-update-via-netl.patch b/batman-adv/patches/0003-batman-adv-Hold-rtnl-lock-during-MTU-update-via-netl.patch new file mode 100644 index 0000000..4d7a392 --- /dev/null +++ b/batman-adv/patches/0003-batman-adv-Hold-rtnl-lock-during-MTU-update-via-netl.patch @@ -0,0 +1,34 @@ +From: Sven Eckelmann <sven@narfation.org> +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 <horms@kernel.org> +Signed-off-by: Sven Eckelmann <sven@narfation.org> + +--- a/net/batman-adv/netlink.c ++++ b/net/batman-adv/netlink.c +@@ -495,7 +495,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]) { |
