]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
netdev-genl: remove rtnl_lock protection from NAPI ops
authorJakub Kicinski <kuba@kernel.org>
Wed, 15 Jan 2025 03:53:19 +0000 (19:53 -0800)
committerJakub Kicinski <kuba@kernel.org>
Thu, 16 Jan 2025 03:13:35 +0000 (19:13 -0800)
NAPI lifetime, visibility and config are all fully under
netdev_lock protection now.

Reviewed-by: Joe Damato <jdamato@fastly.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250115035319.559603-12-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/netdev-genl.c

index 810a446ab62c593ad6a990caff7ff30c4ed8fb24..715f85c6b62eabcc61a10065f98cc914f5f0d975 100644 (file)
@@ -229,8 +229,6 @@ int netdev_nl_napi_get_doit(struct sk_buff *skb, struct genl_info *info)
        if (!rsp)
                return -ENOMEM;
 
-       rtnl_lock();
-
        napi = netdev_napi_by_id_lock(genl_info_net(info), napi_id);
        if (napi) {
                err = netdev_nl_napi_fill_one(rsp, napi, info);
@@ -240,8 +238,6 @@ int netdev_nl_napi_get_doit(struct sk_buff *skb, struct genl_info *info)
                err = -ENOENT;
        }
 
-       rtnl_unlock();
-
        if (err) {
                goto err_free_msg;
        } else if (!rsp->len) {
@@ -300,7 +296,6 @@ int netdev_nl_napi_get_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
        if (info->attrs[NETDEV_A_NAPI_IFINDEX])
                ifindex = nla_get_u32(info->attrs[NETDEV_A_NAPI_IFINDEX]);
 
-       rtnl_lock();
        if (ifindex) {
                netdev = netdev_get_by_index_lock(net, ifindex);
                if (netdev) {
@@ -317,7 +312,6 @@ int netdev_nl_napi_get_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
                        ctx->napi_id = 0;
                }
        }
-       rtnl_unlock();
 
        return err;
 }
@@ -358,8 +352,6 @@ int netdev_nl_napi_set_doit(struct sk_buff *skb, struct genl_info *info)
 
        napi_id = nla_get_u32(info->attrs[NETDEV_A_NAPI_ID]);
 
-       rtnl_lock();
-
        napi = netdev_napi_by_id_lock(genl_info_net(info), napi_id);
        if (napi) {
                err = netdev_nl_napi_set_config(napi, info);
@@ -369,8 +361,6 @@ int netdev_nl_napi_set_doit(struct sk_buff *skb, struct genl_info *info)
                err = -ENOENT;
        }
 
-       rtnl_unlock();
-
        return err;
 }