[net v2 1/2] netdev-genl: Hold rcu_read_lock in napi_get

From: Joe Damato
Date: Tue Nov 12 2024 - 21:18:44 EST


Hold rcu_read_lock in netdev_nl_napi_get_doit, which calls napi_by_id
and is required to be called under rcu_read_lock.

Cc: stable@xxxxxxxxxxxxxxx
Fixes: 27f91aaf49b3 ("netdev-genl: Add netlink framework functions for napi")
Signed-off-by: Joe Damato <jdamato@xxxxxxxxxx>
---
v2:
- Simplified by removing the helper and calling rcu_read_lock /
unlock directly instead.

net/core/netdev-genl.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c
index 765ce7c9d73b..0b684410b52d 100644
--- a/net/core/netdev-genl.c
+++ b/net/core/netdev-genl.c
@@ -233,6 +233,7 @@ int netdev_nl_napi_get_doit(struct sk_buff *skb, struct genl_info *info)
return -ENOMEM;

rtnl_lock();
+ rcu_read_lock();

napi = napi_by_id(napi_id);
if (napi) {
@@ -242,6 +243,7 @@ int netdev_nl_napi_get_doit(struct sk_buff *skb, struct genl_info *info)
err = -ENOENT;
}

+ rcu_read_unlock();
rtnl_unlock();

if (err)
--
2.25.1