All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Abeni <pabeni@redhat.com>
To: Jiri Pirko <jiri@resnulli.us>
Cc: Taehee Yoo <ap420073@gmail.com>,
	davem@davemloft.net, kuba@kernel.org,  edumazet@google.com,
	netdev@vger.kernel.org,
	 syzbot+9bbbacfbf1e04d5221f7@syzkaller.appspotmail.com,
	 syzbot+1c71587a1a09de7fbde3@syzkaller.appspotmail.com
Subject: Re: [PATCH net v2] net: team: get rid of team->lock in team module
Date: Tue, 19 Sep 2023 12:41:42 +0200	[thread overview]
Message-ID: <4d88cd641c25cc231fcbad62c19cae60749bb171.camel@redhat.com> (raw)
In-Reply-To: <ZQl4oCdoeKWO8QqA@nanopsycho>

On Tue, 2023-09-19 at 12:32 +0200, Jiri Pirko wrote:
> Tue, Sep 19, 2023 at 09:40:53AM CEST, pabeni@redhat.com wrote:
> > On Sat, 2023-09-16 at 18:47 +0200, Jiri Pirko wrote:
> > > Sat, Sep 16, 2023 at 03:11:15PM CEST, ap420073@gmail.com wrote:
> > > > The purpose of team->lock is to protect the private data of the team
> > > > interface. But RTNL already protects it all well.
> > > > The precise purpose of the team->lock is to reduce contention of
> > > > RTNL due to GENL operations such as getting the team port list, and
> > > > configuration dump.
> > > > 
> > > > team interface has used a dynamic lockdep key to avoid false-positive
> > > > lockdep deadlock detection. Virtual interfaces such as team usually
> > > > have their own lock for protecting private data.
> > > > These interfaces can be nested.
> > > > team0
> > > >  |
> > > > team1
> > > > 
> > > > Each interface's lock is actually different(team0->lock and team1->lock).
> > > > So,
> > > > mutex_lock(&team0->lock);
> > > > mutex_lock(&team1->lock);
> > > > mutex_unlock(&team1->lock);
> > > > mutex_unlock(&team0->lock);
> > > > The above case is absolutely safe. But lockdep warns about deadlock.
> > > > Because the lockdep understands these two locks are same. This is a
> > > > false-positive lockdep warning.
> > > > 
> > > > So, in order to avoid this problem, the team interfaces started to use
> > > > dynamic lockdep key. The false-positive problem was fixed, but it
> > > > introduced a new problem.
> > > > 
> > > > When the new team virtual interface is created, it registers a dynamic
> > > > lockdep key(creates dynamic lockdep key) and uses it. But there is the
> > > > limitation of the number of lockdep keys.
> > > > So, If so many team interfaces are created, it consumes all lockdep keys.
> > > > Then, the lockdep stops to work and warns about it.
> > > 
> > > What about fixing the lockdep instead? I bet this is not the only
> > > occurence of this problem.
> > 
> > I think/fear that solving the max key lockdep problem could be
> > problematic hard and/or requiring an invasive change.
> 
> But it would solve this false warnings not only here but for many
> others.

Well, let's see if Taehee can came up with something addressing that. I
think that if such problem proves to be too hard, we should consider
other options.

Cheers,

Paolo


  reply	other threads:[~2023-09-19 10:41 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-16 13:11 [PATCH net v2] net: team: get rid of team->lock in team module Taehee Yoo
2023-09-16 16:47 ` Jiri Pirko
2023-09-18  1:16   ` Taehee Yoo
2023-09-18  7:19     ` Jiri Pirko
2023-09-18  7:42       ` Taehee Yoo
2023-09-19  7:40   ` Paolo Abeni
2023-09-19 10:32     ` Jiri Pirko
2023-09-19 10:41       ` Paolo Abeni [this message]
2023-10-04 13:52 ` Jakub Kicinski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4d88cd641c25cc231fcbad62c19cae60749bb171.camel@redhat.com \
    --to=pabeni@redhat.com \
    --cc=ap420073@gmail.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=jiri@resnulli.us \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=syzbot+1c71587a1a09de7fbde3@syzkaller.appspotmail.com \
    --cc=syzbot+9bbbacfbf1e04d5221f7@syzkaller.appspotmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.