summaryrefslogtreecommitdiff
path: root/net/bridge/br_private.h
diff options
context:
space:
mode:
authorNikolay Aleksandrov <nikolay@nvidia.com>2021-08-13 17:59:58 +0300
committerDavid S. Miller <davem@davemloft.net>2021-08-14 14:02:43 +0100
commit67b746f94ff39d8b998c4ea9493c6ab2d6c225d4 (patch)
treed952086c92acb0e8b7b234d4e958f69868c7bc1c /net/bridge/br_private.h
parentbb18ef8e7e180d8590df2808ec4014af114756cb (diff)
net: bridge: mcast: make sure querier port/address updates are consistent
Use a sequence counter to make sure port/address updates can be read consistently without requiring the bridge multicast_lock. We need to zero out the port and address when the other querier has expired and we're about to select ourselves as querier. br_multicast_read_querier will be used later when dumping querier state. Updates are done only with the multicast spinlock and softirqs disabled, while reads are done from process context and from softirqs (due to notifications). Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_private.h')
-rw-r--r--net/bridge/br_private.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 30ca978676f3..70e2d9a7f105 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -82,6 +82,7 @@ struct bridge_mcast_other_query {
struct bridge_mcast_querier {
struct br_ip addr;
int port_ifidx;
+ seqcount_t seq;
};
/* IGMP/MLD statistics */