Now that all individual counters consistently use unsigned long, use the same type for their sum. This ensures correct handling of wrap-around (which is more important for i386 at this point). Signed-off-by: Alexei Lozovsky <me@xxxxxxxxxx> --- arch/x86/include/asm/hardirq.h | 4 ++-- arch/x86/kernel/irq.c | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h index 2dc9c076f611..c05b42c4d8cb 100644 --- a/arch/x86/include/asm/hardirq.h +++ b/arch/x86/include/asm/hardirq.h @@ -54,10 +54,10 @@ DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); extern void ack_bad_irq(unsigned int irq); -extern u64 arch_irq_stat_cpu(unsigned int cpu); +extern unsigned long arch_irq_stat_cpu(unsigned int cpu); #define arch_irq_stat_cpu arch_irq_stat_cpu -extern u64 arch_irq_stat(void); +extern unsigned long arch_irq_stat(void); #define arch_irq_stat arch_irq_stat diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index 6e7c6b4cebc1..2d889e26ae68 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c @@ -189,9 +189,9 @@ int arch_show_interrupts(struct seq_file *p, int prec) /* * /proc/stat helpers */ -u64 arch_irq_stat_cpu(unsigned int cpu) +unsigned long arch_irq_stat_cpu(unsigned int cpu) { - u64 sum = READ_ONCE(irq_stats(cpu)->__nmi_count); + unsigned long sum = READ_ONCE(irq_stats(cpu)->__nmi_count); #ifdef CONFIG_X86_LOCAL_APIC sum += READ_ONCE(irq_stats(cpu)->apic_timer_irqs); @@ -219,10 +219,9 @@ u64 arch_irq_stat_cpu(unsigned int cpu) return sum; } -u64 arch_irq_stat(void) +unsigned long arch_irq_stat(void) { - u64 sum = atomic_long_read(&irq_err_count); - return sum; + return atomic_long_read(&irq_err_count); } static __always_inline void handle_irq(struct irq_desc *desc, -- 2.25.1