Skip to content

Commit 987aae7

Browse files
ecsvkuba-moo
authored andcommitted
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: c6a953c ("batman-adv: Trigger events for auto adjusted MTU") Signed-off-by: Sven Eckelmann <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://lore.kernel.org/r/20230821-batadv-missing-mtu-rtnl-lock-v1-1-1c5a7bfe861e@narfation.org Signed-off-by: Jakub Kicinski <[email protected]>
1 parent b888c51 commit 987aae7

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

net/batman-adv/netlink.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,10 @@ static int batadv_netlink_set_mesh(struct sk_buff *skb, struct genl_info *info)
495495
attr = info->attrs[BATADV_ATTR_FRAGMENTATION_ENABLED];
496496

497497
atomic_set(&bat_priv->fragmentation, !!nla_get_u8(attr));
498+
499+
rtnl_lock();
498500
batadv_update_min_mtu(bat_priv->soft_iface);
501+
rtnl_unlock();
499502
}
500503

501504
if (info->attrs[BATADV_ATTR_GW_BANDWIDTH_DOWN]) {

0 commit comments

Comments
 (0)