summaryrefslogtreecommitdiff
path: root/include/linux/netdevice.h
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2025-01-15 06:53:18 +0300
committerJakub Kicinski <kuba@kernel.org>2025-01-16 06:13:34 +0300
commite7ed2ba757bf86a4f90ae9c4080235fc9c74d8a2 (patch)
treee3f4fdcd6c949f471c61cdb1eda536a60926022e /include/linux/netdevice.h
parent53ed30800d3fd36e1e9f7ba8014b150632f714b1 (diff)
downloadlinux-e7ed2ba757bf86a4f90ae9c4080235fc9c74d8a2.tar.xz
net: protect NAPI config fields with netdev_lock()
Protect the following members of netdev and napi by netdev_lock: - defer_hard_irqs, - gro_flush_timeout, - irq_suspend_timeout. The first two are written via sysfs (which this patch switches to new lock), and netdev genl which holds both netdev and rtnl locks. irq_suspend_timeout is only written by netdev genl. 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-11-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r--include/linux/netdevice.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index a47ff20365f9..8308d9c75918 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -384,11 +384,11 @@ struct napi_struct {
int rx_count; /* length of rx_list */
unsigned int napi_id; /* protected by netdev_lock */
struct hrtimer timer;
- struct task_struct *thread; /* protected by netdev_lock */
+ /* all fields past this point are write-protected by netdev_lock */
+ struct task_struct *thread;
unsigned long gro_flush_timeout;
unsigned long irq_suspend_timeout;
u32 defer_hard_irqs;
- /* all fields past this point are write-protected by netdev_lock */
/* control-path-only fields follow */
struct list_head dev_list;
struct hlist_node napi_hash_node;
@@ -2452,7 +2452,8 @@ struct net_device {
* Drivers are free to use it for other protection.
*
* Protects:
- * @napi_list, @net_shaper_hierarchy, @reg_state, @threaded
+ * @gro_flush_timeout, @napi_defer_hard_irqs, @napi_list,
+ * @net_shaper_hierarchy, @reg_state, @threaded
*
* Partially protects (writers must hold both @lock and rtnl_lock):
* @up