On Thu, 21 Jan 2021 11:29:37 +0100 Ivan Vecera wrote:
> On Wed, 20 Jan 2021 15:18:20 -0800
> Cong Wang <xiyou.wangc...@gmail.com> wrote:
> > On Wed, Jan 20, 2021 at 4:56 AM Ivan Vecera <ivec...@redhat.com> wrote:  
> > > Team driver protects port list traversal by its team->lock mutex
> > > in functions like team_change_mtu(), team_set_rx_mode(),

The set_rx_mode part can't be true, set_rx_mode can't sleep and
team->lock is a mutex.

> > > To fix the problem __team_compute_features() needs to be postponed
> > > for these cases.    
> > 
> > Is there any user-visible effect after deferring this feature change?
>
> An user should not notice this change.

I think Cong is right, can you expand a little on your assertion?
User should be able to assume that the moment syscall returns the
features had settled.

What does team->mutex actually protect in team_compute_features()?
All callers seem to hold RTNL at a quick glance. This is a bit of 
a long shot but isn't it just tryin to protect the iteration over 
ports which could be under RCU?

More crude idea would be to wrap the mutex_unlock(&team->lock) into 
a helper which checks if something tried to change features while it
was locked. rtnl_unlock()-style.

Reply via email to