On Tue, Mar 02, 2021 at 05:05:00PM +0100, Linus Walleij wrote: > On Tue, Mar 2, 2021 at 4:58 AM DENG Qingfang <dqf...@gmail.com> wrote: > > On Mon, Mar 1, 2021 at 9:48 PM Linus Walleij <linus.wall...@linaro.org> > > wrote: > > > With my minor changes: > > > Tested-by: Linus Walleij <linus.wall...@linaro.org> > > > > How about using a mutex lock in port_bridge_{join,leave} ? > > In my opinion all functions that access multiple registers should be > > synchronized. > > That's one way, in some cases the framework (DSA) serialize > the accesses so I don't know if that already happens on a > higher level? Since it is accessed over a slow bus we should go > for mutex in that case indeed.
DSA does not serialize this. The .port_bridge_join and .port_bridge_leave calls are initiated from the NETDEV_CHANGEUPPER net device event, which is called under rtnl_mutex (see call_netdevice_notifiers). This is pretty fundamental and I don't think it will ever change. However, if you still want to add an extra layer of locking (with code paths that for some reason are not under the rtnl_mutex), then go ahead, I suppose. It will be challenging to make sure they do something that isn't snake oil, though.