From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nikolay Aleksandrov Subject: Re: [PATCH net-next] net: bridge: Lock before br_fdb_find() Date: Mon, 28 May 2018 18:53:58 +0300 Message-ID: <012aee15-9e57-0267-cc3a-3b091977fa3f@cumulusnetworks.com> References: <58a3153f-9393-da8c-7aea-7a68537f6f90@cumulusnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: davem@davemloft.net To: Petr Machata , bridge@lists.linux-foundation.org, netdev@vger.kernel.org Return-path: In-Reply-To: <58a3153f-9393-da8c-7aea-7a68537f6f90@cumulusnetworks.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: bridge-bounces@lists.linux-foundation.org Errors-To: bridge-bounces@lists.linux-foundation.org List-Id: netdev.vger.kernel.org On 28/05/18 18:52, Nikolay Aleksandrov wrote: > On 28/05/18 18:44, Petr Machata wrote: >> Callers of br_fdb_find() need to hold the hash lock, which >> br_fdb_find_port() doesn't do. Add the missing lock/unlock >> pair. >> >> Signed-off-by: Petr Machata >> --- >> net/bridge/br_fdb.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c >> index b19e310..3f5691a 100644 >> --- a/net/bridge/br_fdb.c >> +++ b/net/bridge/br_fdb.c >> @@ -135,9 +135,11 @@ struct net_device *br_fdb_find_port(const struct net_device *br_dev, >> return NULL; >> >> br = netdev_priv(br_dev); >> + spin_lock_bh(&br->hash_lock); >> f = br_fdb_find(br, addr, vid); >> if (f && f->dst) >> dev = f->dst->dev; >> + spin_unlock_bh(&br->hash_lock); >> >> return dev; >> } >> > > There's also a lockdep assert for hash_lock in br_find_fdb(). > > Acked-by: Nikolay Aleksandrov > Fixes: 4d4fd36126d6 ("net: bridge: Publish bridge accessor functions")