mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
gtp: hold RCU for the device lookup when adding a PDP context
gtp_genl_new_pdp() calls gtp_find_dev(), which looks the device up with dev_get_by_index_rcu(). Since commite2d1baca2b("gtp: remove useless rcu_read_lock()"), this only runs under the rtnl lock, and kernels with CONFIG_PROVE_RCU_LIST warn: WARNING: suspicious RCU usage net/core/dev.c:1047 RCU-list traversed in non-reader section!! ... dev_get_by_index_rcu gtp_find_dev gtp_genl_new_pdp Hold the RCU read lock around the lookup only: gtp_pdp_add() allocates with GFP_KERNEL, and the rtnl lock keeps the device alive afterwards. Found with the gtp selftest on a debug kernel. Fixes:e2d1baca2b("gtp: remove useless rcu_read_lock()") Signed-off-by: Anil Kaushik <anilkaushikwireless@gmail.com> Link: https://patch.msgid.link/20261016093225.1036375-3-anilkaushikwireless@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
758d8928d2
commit
fe3e1a42fb
|
|
@ -2050,7 +2050,10 @@ static int gtp_genl_new_pdp(struct sk_buff *skb, struct genl_info *info)
|
|||
|
||||
rtnl_lock();
|
||||
|
||||
/* the rtnl lock keeps the device alive once found */
|
||||
rcu_read_lock();
|
||||
gtp = gtp_find_dev(sock_net(skb->sk), info->attrs);
|
||||
rcu_read_unlock();
|
||||
if (!gtp) {
|
||||
err = -ENODEV;
|
||||
goto out_unlock;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user