Skip to content

Commit b9fd14c

Browse files
ecsvsimonwunderlich
authored andcommitted
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: 0b5ecc6 ("batman-adv: add throughput override attribute to hard_ifaces") Signed-off-by: Sven Eckelmann <[email protected]> Acked-by: Marek Lindner <[email protected]> Signed-off-by: Simon Wunderlich <[email protected]>
1 parent 88d0895 commit b9fd14c

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

net/batman-adv/sysfs.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,8 +1090,9 @@ static ssize_t batadv_store_throughput_override(struct kobject *kobj,
10901090
if (old_tp_override == tp_override)
10911091
goto out;
10921092

1093-
batadv_info(net_dev, "%s: Changing from: %u.%u MBit to: %u.%u MBit\n",
1094-
"throughput_override",
1093+
batadv_info(hard_iface->soft_iface,
1094+
"%s: %s: Changing from: %u.%u MBit to: %u.%u MBit\n",
1095+
"throughput_override", net_dev->name,
10951096
old_tp_override / 10, old_tp_override % 10,
10961097
tp_override / 10, tp_override % 10);
10971098

0 commit comments

Comments
 (0)