diff options
author | Nikolay Aleksandrov <nikolay@nvidia.com> | 2021-12-27 19:21:15 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-12-29 12:59:37 -0800 |
commit | 99b40610956a8a8755653a67392e2a8b772453be (patch) | |
tree | 53c62e4e8b7202de4f28fc10af540f87de143ce1 /net/bridge/br_vlan_options.c | |
parent | fb7bc9204095090731430c8921f9e629740c110a (diff) | |
download | linux-99b40610956a8a8755653a67392e2a8b772453be.tar.gz linux-99b40610956a8a8755653a67392e2a8b772453be.tar.bz2 linux-99b40610956a8a8755653a67392e2a8b772453be.zip |
net: bridge: mcast: add and enforce query interval minimum
As reported[1] if query interval is set too low and we have multiple
bridges or even a single bridge with multiple querier vlans configured
we can crash the machine. Add a 1 second minimum which must be enforced
by overwriting the value if set lower (i.e. without returning an error) to
avoid breaking user-space. If that happens a log message is emitted to let
the administrator know that the interval has been set to the minimum.
The issue has been present since these intervals could be user-controlled.
[1] https://lore.kernel.org/netdev/e8b9ce41-57b9-b6e2-a46a-ff9c791cf0ba@gmail.com/
Fixes: d902eee43f19 ("bridge: Add multicast count/interval sysfs entries")
Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/bridge/br_vlan_options.c')
-rw-r--r-- | net/bridge/br_vlan_options.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/bridge/br_vlan_options.c b/net/bridge/br_vlan_options.c index 8ffd4ed2563c..bf1ac0874279 100644 --- a/net/bridge/br_vlan_options.c +++ b/net/bridge/br_vlan_options.c @@ -521,7 +521,7 @@ static int br_vlan_process_global_one_opts(const struct net_bridge *br, u64 val; val = nla_get_u64(tb[BRIDGE_VLANDB_GOPTS_MCAST_QUERY_INTVL]); - v->br_mcast_ctx.multicast_query_interval = clock_t_to_jiffies(val); + br_multicast_set_query_intvl(&v->br_mcast_ctx, val); *changed = true; } if (tb[BRIDGE_VLANDB_GOPTS_MCAST_QUERY_RESPONSE_INTVL]) { |