From: Kuniyuki Iwashima <kuniyu@amazon.com>
To: <sdf@fomichev.me>
Cc: <andrew+netdev@lunn.ch>, <atenart@kernel.org>,
<davem@davemloft.net>, <edumazet@google.com>, <enjuk@amazon.com>,
<horms@kernel.org>, <jasowang@redhat.com>, <jdamato@fastly.com>,
<kory.maincent@bootlin.com>, <kuba@kernel.org>,
<kuniyu@amazon.com>, <linux-kernel@vger.kernel.org>,
<netdev@vger.kernel.org>, <pabeni@redhat.com>,
<willemdebruijn.kernel@gmail.com>
Subject: Re: [PATCH net-next v2 2/2] net: reorder dev_addr_sem lock
Date: Thu, 13 Mar 2025 10:56:00 -0700 [thread overview]
Message-ID: <20250313175603.17045-1-kuniyu@amazon.com> (raw)
In-Reply-To: <20250312190513.1252045-3-sdf@fomichev.me>
From: Stanislav Fomichev <sdf@fomichev.me>
Date: Wed, 12 Mar 2025 12:05:13 -0700
> Lockdep complains about circular lock in 1 -> 2 -> 3 (see below).
>
> Change the lock ordering to be:
> - rtnl_lock
> - dev_addr_sem
> - netdev_ops (only for lower devices!)
> - team_lock (or other per-upper device lock)
>
> 1. rtnl_lock -> netdev_ops -> dev_addr_sem
>
> rtnl_setlink
> rtnl_lock
> do_setlink IFLA_ADDRESS on lower
> netdev_ops
> dev_addr_sem
>
> 2. rtnl_lock -> team_lock -> netdev_ops
>
> rtnl_newlink
> rtnl_lock
> do_setlink IFLA_MASTER on lower
> do_set_master
> team_add_slave
> team_lock
> team_port_add
> dev_set_mtu
> netdev_ops
>
> 3. rtnl_lock -> dev_addr_sem -> team_lock
>
> rtnl_newlink
> rtnl_lock
> do_setlink IFLA_ADDRESS on upper
> dev_addr_sem
> netif_set_mac_address
> team_set_mac_address
> team_lock
>
> 4. rtnl_lock -> netdev_ops -> dev_addr_sem
>
> rtnl_lock
> dev_ifsioc
> dev_set_mac_address_user
>
> __tun_chr_ioctl
> rtnl_lock
> dev_set_mac_address_user
>
> tap_ioctl
> rtnl_lock
> dev_set_mac_address_user
>
> dev_set_mac_address_user
> netdev_lock_ops
> netif_set_mac_address_user
> dev_addr_sem
>
> v2:
> - move lock reorder to happen after kmalloc (Kuniyuki)
My intention was move kmalloc() and memcpy() out of both
netdev_lock and dev_addr_sem like
netdev_ops_unlock()
kmalloc()
memcpy()
down_write()
, but not a big deal :)
>
> Cc: Kohei Enju <enjuk@amazon.com>
> Fixes: df43d8bf1031 ("net: replace dev_addr_sem with netdev instance lock")
> Signed-off-by: Stanislav Fomichev <sdf@fomichev.me>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
next prev parent reply other threads:[~2025-03-13 17:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-12 19:05 [PATCH net-next v2 0/2] net: bring back dev_addr_sem Stanislav Fomichev
2025-03-12 19:05 ` [PATCH net-next v2 1/2] Revert "net: replace dev_addr_sem with netdev instance lock" Stanislav Fomichev
2025-03-12 19:05 ` [PATCH net-next v2 2/2] net: reorder dev_addr_sem lock Stanislav Fomichev
2025-03-13 17:56 ` Kuniyuki Iwashima [this message]
2025-03-17 8:15 ` [PATCH net-next v2 0/2] net: bring back dev_addr_sem Lei Yang
2025-03-19 18:00 ` patchwork-bot+netdevbpf
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=20250313175603.17045-1-kuniyu@amazon.com \
--to=kuniyu@amazon.com \
--cc=andrew+netdev@lunn.ch \
--cc=atenart@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=enjuk@amazon.com \
--cc=horms@kernel.org \
--cc=jasowang@redhat.com \
--cc=jdamato@fastly.com \
--cc=kory.maincent@bootlin.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sdf@fomichev.me \
--cc=willemdebruijn.kernel@gmail.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.