David Miller wrote: > From: Wolfgang Bumiller <w.bumil...@proxmox.com> > Date: Tue, 10 Apr 2018 11:15:14 +0200 > > > diff --git a/net/core/neighbour.c b/net/core/neighbour.c > > index 7b7a14abba28..601df647588c 100644 > > --- a/net/core/neighbour.c > > +++ b/net/core/neighbour.c > > @@ -292,7 +292,6 @@ int neigh_ifdown(struct neigh_table *tbl, struct > > net_device *dev) > > write_lock_bh(&tbl->lock); > > neigh_flush_dev(tbl, dev); > > pneigh_ifdown(tbl, dev); > > - write_unlock_bh(&tbl->lock); > > If we are going to fix it this way, we need to annotate the code here in some > way so that future readers understand why the tbl->lock is not being released > here.
A better way would of course be nice, too, but I find it hard to find one given how "far away" the IGMP and then output code are from this point. > One way is to add a comment. > > Another way is to rename pneigh_ifdown() to "pneigh_ifdown_and_unlock()". Sure, I can send a v2 with whichever is preferred - personally I prefer the rename as it'll be visible at both the calling & implementation side.