netdev-genl: Hold rcu_read_lock in napi_set
authorJoe Damato <jdamato@fastly.com>
Thu, 14 Nov 2024 17:55:59 +0000 (17:55 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 15 Nov 2024 22:21:00 +0000 (14:21 -0800)
Hold rcu_read_lock during netdev_nl_napi_set_doit, which calls
napi_by_id and requires rcu_read_lock to be held.

Closes: https://lore.kernel.org/netdev/719083c2-e277-447b-b6ea-ca3acb293a03@redhat.com/
Fixes: 1287c1ae0fc2 ("netdev-genl: Support setting per-NAPI config values")
Signed-off-by: Joe Damato <jdamato@fastly.com>
Link: https://patch.msgid.link/20241114175600.18882-1-jdamato@fastly.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/netdev-genl.c

index 765ce7c..fa119ff 100644 (file)
@@ -346,6 +346,7 @@ 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();
+       rcu_read_lock();
 
        napi = napi_by_id(napi_id);
        if (napi) {
@@ -355,6 +356,7 @@ int netdev_nl_napi_set_doit(struct sk_buff *skb, struct genl_info *info)
                err = -ENOENT;
        }
 
+       rcu_read_unlock();
        rtnl_unlock();
 
        return err;