dpll: rely on rcu for netdev_dpll_pin()
authorEric Dumazet <edumazet@google.com>
Fri, 23 Feb 2024 12:32:08 +0000 (12:32 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 27 Feb 2024 02:39:34 +0000 (18:39 -0800)
commit0d60d8df6f493bb46bf5db40d39dd60a1bafdd4e
tree53eed160261aa91dfdd4270e8c5ee634abe138ea
parent0e67899abfbfdea0c3c0ed3fd263ffc601c5c157
dpll: rely on rcu for netdev_dpll_pin()

This fixes a possible UAF in if_nlmsg_size(),
which can run without RTNL.

Add rcu protection to "struct dpll_pin"

Move netdev_dpll_pin() from netdevice.h to dpll.h to
decrease name pollution.

Note: This looks possible to no longer acquire RTNL in
netdev_dpll_pin_assign() later in net-next.

v2: do not force rcu_read_lock() in rtnl_dpll_pin_size() (Jiri Pirko)

Fixes: 5f1842692880 ("netdev: expose DPLL pin handle for netdevice")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Cc: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20240223123208.3543319-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/dpll/dpll_core.c
drivers/dpll/dpll_core.h
include/linux/dpll.h
include/linux/netdevice.h
net/core/dev.c