mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
bridge: Fix VLAN reference count problem
[ Upstream commit0e5a82efda
] When a VLAN is added on a port, a reference is taken on the corresponding master VLAN entry. If it does not already exist, then it is created and a reference taken. However, in the second case a reference is not really taken when CONFIG_REFCOUNT_FULL is enabled as refcount_inc() is replaced by refcount_inc_not_zero(). Fix this by using refcount_set() on a newly created master VLAN entry. Fixes:2512775985
("net, bridge: convert net_bridge_vlan.refcnt from atomic_t to refcount_t") Signed-off-by: Ido Schimmel <idosch@mellanox.com> Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
00ec3b0ca3
commit
cbd173b810
@ -157,6 +157,8 @@ static struct net_bridge_vlan *br_vlan_get_master(struct net_bridge *br, u16 vid
|
||||
masterv = br_vlan_find(vg, vid);
|
||||
if (WARN_ON(!masterv))
|
||||
return NULL;
|
||||
refcount_set(&masterv->refcnt, 1);
|
||||
return masterv;
|
||||
}
|
||||
refcount_inc(&masterv->refcnt);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user