|
@@ -1621,6 +1621,9 @@ br_multicast_leave_group(struct net_bridge *br,
|
|
|
if (!br_port_group_equal(p, port, src))
|
|
if (!br_port_group_equal(p, port, src))
|
|
|
continue;
|
|
continue;
|
|
|
|
|
|
|
|
|
|
+ if (p->flags & MDB_PG_FLAGS_PERMANENT)
|
|
|
|
|
+ break;
|
|
|
|
|
+
|
|
|
rcu_assign_pointer(*pp, p->next);
|
|
rcu_assign_pointer(*pp, p->next);
|
|
|
hlist_del_init(&p->mglist);
|
|
hlist_del_init(&p->mglist);
|
|
|
del_timer(&p->timer);
|
|
del_timer(&p->timer);
|