From dbdc517e48f74e08bc469cafe4b5041c61bfc6ee Mon Sep 17 00:00:00 2001 From: Kuniyuki Iwashima Date: Fri, 2 Dec 2022 12:00:43 +0800 Subject: [PATCH] net: Fix a data-race around netdev_budget_usecs. stable inclusion from stable-v5.10.140 commit c3bda708e9c40d0a88f3c86c3d9103db44b38c0b category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I63FTT Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c3bda708e9c40d0a88f3c86c3d9103db44b38c0b -------------------------------- [ Upstream commit fa45d484c52c73f79db2c23b0cdfc6c6455093ad ] While reading netdev_budget_usecs, it can be changed concurrently. Thus, we need to add READ_ONCE() to its reader. Fixes: 7acf8a1e8a28 ("Replace 2 jiffies with sysctl netdev_budget_usecs to enable softirq tuning") Signed-off-by: Kuniyuki Iwashima Signed-off-by: David S. Miller Signed-off-by: Sasha Levin Signed-off-by: Zheng Zengkai Reviewed-by: Wei Li --- net/core/dev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/core/dev.c b/net/core/dev.c index a57783e41c98..64837bb056ee 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -6885,7 +6885,7 @@ static __latent_entropy void net_rx_action(struct softirq_action *h) { struct softnet_data *sd = this_cpu_ptr(&softnet_data); unsigned long time_limit = jiffies + - usecs_to_jiffies(netdev_budget_usecs); + usecs_to_jiffies(READ_ONCE(netdev_budget_usecs)); int budget = READ_ONCE(netdev_budget); LIST_HEAD(list); LIST_HEAD(repoll); -- GitLab