mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
genirq: Annotate irq stats data races
Both the per cpu stats and the accumulated count are accessed lockless and can be concurrently modified. That's intentional and the stats are a rough estimate anyway. Annotate them with data_race(). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20201210194043.067097663@linutronix.de
This commit is contained in:
parent
3e2380123f
commit
9e42ad10ce
@ -943,10 +943,10 @@ unsigned int kstat_irqs(unsigned int irq)
|
||||
if (!irq_settings_is_per_cpu_devid(desc) &&
|
||||
!irq_settings_is_per_cpu(desc) &&
|
||||
!irq_is_nmi(desc))
|
||||
return desc->tot_count;
|
||||
return data_race(desc->tot_count);
|
||||
|
||||
for_each_possible_cpu(cpu)
|
||||
sum += *per_cpu_ptr(desc->kstat_irqs, cpu);
|
||||
sum += data_race(*per_cpu_ptr(desc->kstat_irqs, cpu));
|
||||
return sum;
|
||||
}
|
||||
|
||||
|
@ -488,9 +488,10 @@ int show_interrupts(struct seq_file *p, void *v)
|
||||
if (!desc || irq_settings_is_hidden(desc))
|
||||
goto outsparse;
|
||||
|
||||
if (desc->kstat_irqs)
|
||||
if (desc->kstat_irqs) {
|
||||
for_each_online_cpu(j)
|
||||
any_count |= *per_cpu_ptr(desc->kstat_irqs, j);
|
||||
any_count |= data_race(*per_cpu_ptr(desc->kstat_irqs, j));
|
||||
}
|
||||
|
||||
if ((!desc->action || irq_desc_is_chained(desc)) && !any_count)
|
||||
goto outsparse;
|
||||
|
Loading…
Reference in New Issue
Block a user