mirror of
https://git.openwrt.org/feed/routing.git
synced 2024-06-18 05:03:57 +02:00
42af8350c1
Signed-off-by: Sven Eckelmann <sven@narfation.org>
43 lines
1.9 KiB
Diff
43 lines
1.9 KiB
Diff
From: Sven Eckelmann <sven@narfation.org>
|
|
Date: Fri, 31 Aug 2018 16:46:47 +0200
|
|
Subject: batman-adv: Fix segfault when writing to throughput_override
|
|
|
|
The per hardif sysfs file "batman_adv/throughput_override" prints the
|
|
resulting change as info text when the users writes to this file. It uses
|
|
the helper function batadv_info to add it at the same time to the kernel
|
|
ring buffer and to the batman-adv debug log (when CONFIG_BATMAN_ADV_DEBUG
|
|
is enabled).
|
|
|
|
The function batadv_info requires as first parameter the batman-adv softif
|
|
net_device. This parameter is then used to find the private buffer which
|
|
contains the debug log for this batman-adv interface. But
|
|
batadv_store_throughput_override used as first argument the slave
|
|
net_device. This slave device doesn't have the batadv_priv private data
|
|
which is access by batadv_info.
|
|
|
|
Writing to this file with CONFIG_BATMAN_ADV_DEBUG enabled can either lead
|
|
to a segfault or to memory corruption.
|
|
|
|
Fixes: c513176e4b7a ("batman-adv: add throughput override attribute to hard_ifaces")
|
|
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
|
Acked-by: Marek Lindner <mareklindner@neomailbox.ch>
|
|
|
|
Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/ddf99b78e255530cbadc0f67656a549e19520280
|
|
|
|
diff --git a/net/batman-adv/sysfs.c b/net/batman-adv/sysfs.c
|
|
index f2eef43bd2ec5b798ba552ff14eedcfa734b39d6..3a76e8970c025ca6917d6cd15d1382f685cd3532 100644
|
|
--- a/net/batman-adv/sysfs.c
|
|
+++ b/net/batman-adv/sysfs.c
|
|
@@ -1090,8 +1090,9 @@ static ssize_t batadv_store_throughput_override(struct kobject *kobj,
|
|
if (old_tp_override == tp_override)
|
|
goto out;
|
|
|
|
- batadv_info(net_dev, "%s: Changing from: %u.%u MBit to: %u.%u MBit\n",
|
|
- "throughput_override",
|
|
+ batadv_info(hard_iface->soft_iface,
|
|
+ "%s: %s: Changing from: %u.%u MBit to: %u.%u MBit\n",
|
|
+ "throughput_override", net_dev->name,
|
|
old_tp_override / 10, old_tp_override % 10,
|
|
tp_override / 10, tp_override % 10);
|
|
|