Re: [PATCH] proc: only export statistics of softirqs for online cpus

From: Alexey Dobriyan
Date: Fri Jan 11 2019 - 18:03:50 EST


On Thu, Jan 10, 2019 at 07:24:01PM +0800, Tan Hu wrote:
> @@ -12,13 +12,13 @@ static int show_softirqs(struct seq_file *p, void *v)
> int i, j;
>
> seq_puts(p, " ");
> - for_each_possible_cpu(i)
> + for_each_online_cpu(i)
> seq_printf(p, "CPU%-8d", i);
> seq_putc(p, '\n');
>
> for (i = 0; i < NR_SOFTIRQS; i++) {
> seq_printf(p, "%12s:", softirq_to_name[i]);
> - for_each_possible_cpu(j)
> + for_each_online_cpu(j)
> seq_printf(p, " %10u", kstat_softirqs_cpu(i, j));
> seq_putc(p, '\n');
> }

This should break userspace:

https://sources.debian.org/src/netsniff-ng/0.6.5-1/ifpps.c/#L330

This code gets the number of "possible" CPUs from sysconf(3) and doesn't
parse header to find out which CPUs are online.