bridge: mdb: Marking port-group as offloaded
authorElad Raz <[email protected]>
Thu, 21 Apr 2016 10:52:45 +0000 (12:52 +0200)
committerDavid S. Miller <[email protected]>
Sun, 24 Apr 2016 18:23:32 +0000 (14:23 -0400)
commit45ebcce56823d14d196dbdecd26783b3d5f464a6
tree3fab543500b3d8ee7ccb7def33b957e2c97886f7
parent6dd684c0feb207f30180570bad24264b922d9476
bridge: mdb: Marking port-group as offloaded

There is a race-condition when updating the mdb offload flag without using
the mulicast_lock. This reverts commit 9e8430f8d60d98 ("bridge: mdb:
Passing the port-group pointer to br_mdb module").

This patch marks offloaded MDB entry as "offload" by changing the port-
group flags and marks it as MDB_PG_FLAGS_OFFLOAD.

When switchdev PORT_MDB succeeded and adds a multicast group, a completion
callback is been invoked "br_mdb_complete". The completion function
locks the multicast_lock and finds the right net_bridge_port_group and
marks it as offloaded.

Fixes: 9e8430f8d60d98 ("bridge: mdb: Passing the port-group pointer to br_mdb module")
Reported-by: Nikolay Aleksandrov <[email protected]>
Signed-off-by: Elad Raz <[email protected]>
Signed-off-by: Jiri Pirko <[email protected]>
Reviewed-by: Ido Schimmel <[email protected]>
Acked-by: Nikolay Aleksandrov <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
net/bridge/br_mdb.c
net/bridge/br_multicast.c
net/bridge/br_private.h