Skip to content

Commit

Permalink
batman-adv: Fix lock assert after fragmentation change
Browse files Browse the repository at this point in the history
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: c738e47 ("batman-adv: Merge bugfixes from 2023.2")
Signed-off-by: Sven Eckelmann <[email protected]>
  • Loading branch information
ecsv committed Aug 22, 2023
1 parent c738e47 commit 78ac6ee
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
2 changes: 1 addition & 1 deletion batman-adv/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ include $(TOPDIR)/rules.mk

PKG_NAME:=batman-adv
PKG_VERSION:=2023.1
PKG_RELEASE:=3
PKG_RELEASE:=4

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
From: Sven Eckelmann <[email protected]>
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: [email protected]
Reported-by: [email protected]
Fixes: 27c4d7c1c7fa ("batman-adv: Trigger events for auto adjusted MTU")
Reviewed-by: Simon Horman <[email protected]>
Signed-off-by: Sven Eckelmann <[email protected]>
Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/aeb35331aa9a17f9affd84c1a5b020aeb4a976f4

--- 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]) {

0 comments on commit 78ac6ee

Please sign in to comment.