mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-28 06:44:36 -05:00
net: add data-race annotations in softnet_seq_show()
softnet_seq_show() reads several fields that might be updated concurrently. Add READ_ONCE() and WRITE_ONCE() annotations. Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/20250407163602.170356-4-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
7b6f0a852d
commit
22d046a778
@@ -4953,7 +4953,8 @@ static void rps_trigger_softirq(void *data)
|
||||
struct softnet_data *sd = data;
|
||||
|
||||
____napi_schedule(sd, &sd->backlog);
|
||||
sd->received_rps++;
|
||||
/* Pairs with READ_ONCE() in softnet_seq_show() */
|
||||
WRITE_ONCE(sd->received_rps, sd->received_rps + 1);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_RPS */
|
||||
@@ -7523,7 +7524,8 @@ static __latent_entropy void net_rx_action(void)
|
||||
*/
|
||||
if (unlikely(budget <= 0 ||
|
||||
time_after_eq(jiffies, time_limit))) {
|
||||
sd->time_squeeze++;
|
||||
/* Pairs with READ_ONCE() in softnet_seq_show() */
|
||||
WRITE_ONCE(sd->time_squeeze, sd->time_squeeze + 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,11 +145,11 @@ static int softnet_seq_show(struct seq_file *seq, void *v)
|
||||
seq_printf(seq,
|
||||
"%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x "
|
||||
"%08x %08x\n",
|
||||
sd->processed, atomic_read(&sd->dropped),
|
||||
sd->time_squeeze, 0,
|
||||
READ_ONCE(sd->processed), atomic_read(&sd->dropped),
|
||||
READ_ONCE(sd->time_squeeze), 0,
|
||||
0, 0, 0, 0, /* was fastroute */
|
||||
0, /* was cpu_collision */
|
||||
sd->received_rps, flow_limit_count,
|
||||
READ_ONCE(sd->received_rps), flow_limit_count,
|
||||
input_qlen + process_qlen, (int)seq->index,
|
||||
input_qlen, process_qlen);
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user