Message ID | 20240815204254.49813-1-kuniyu@amazon.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v1,net] mctp: Use __mctp_dev_get() in mctp_fill_link_af(). | expand |
On Thu, 15 Aug 2024 13:42:54 -0700 Kuniyuki Iwashima wrote: > Since commit 5fa85a09390c ("net: core: rcu-ify rtnl af_ops"), > af_ops->fill_link_af() is called under RCU. > > mctp_fill_link_af() calls mctp_dev_get_rtnl() that uses > rtnl_dereference(), so lockdep should complain about it. > > Let's use __mctp_dev_get() instead. And this is what crashes kunit tests, I reckon.
From: Jakub Kicinski <kuba@kernel.org> Date: Thu, 15 Aug 2024 18:39:46 -0700 > On Thu, 15 Aug 2024 13:42:54 -0700 Kuniyuki Iwashima wrote: > > Since commit 5fa85a09390c ("net: core: rcu-ify rtnl af_ops"), > > af_ops->fill_link_af() is called under RCU. > > > > mctp_fill_link_af() calls mctp_dev_get_rtnl() that uses > > rtnl_dereference(), so lockdep should complain about it. > > > > Let's use __mctp_dev_get() instead. > > And this is what crashes kunit tests, I reckon. Exactly, I missed that the helper increments the dev refcnt. I'll use bare rcu_dereference(). Thanks!
diff --git a/net/mctp/device.c b/net/mctp/device.c index acb97b257428..7ffddab01e97 100644 --- a/net/mctp/device.c +++ b/net/mctp/device.c @@ -366,7 +366,7 @@ static int mctp_fill_link_af(struct sk_buff *skb, { struct mctp_dev *mdev; - mdev = mctp_dev_get_rtnl(dev); + mdev = __mctp_dev_get(dev); if (!mdev) return -ENODATA; if (nla_put_u32(skb, IFLA_MCTP_NET, mdev->net))
Since commit 5fa85a09390c ("net: core: rcu-ify rtnl af_ops"), af_ops->fill_link_af() is called under RCU. mctp_fill_link_af() calls mctp_dev_get_rtnl() that uses rtnl_dereference(), so lockdep should complain about it. Let's use __mctp_dev_get() instead. Fixes: 583be982d934 ("mctp: Add device handling and netlink interface") Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> --- net/mctp/device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)