s390/cpuinfo: fix wrong output when CPU0 is offline
authorAlexander Gordeev <agordeev@linux.ibm.com>
Mon, 16 Mar 2020 11:39:55 +0000 (12:39 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Mon, 23 Mar 2020 12:41:54 +0000 (13:41 +0100)
/proc/cpuinfo should not print information about CPU 0 when it is offline.

Fixes: 281eaa8cb67c ("s390/cpuinfo: simplify locking and skip offline cpus early")
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
[heiko.carstens@de.ibm.com: shortened commit message]
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/kernel/processor.c

index 39bf777..f36acc8 100644 (file)
@@ -188,8 +188,9 @@ static void show_cpu_mhz(struct seq_file *m, unsigned long n)
 static int show_cpuinfo(struct seq_file *m, void *v)
 {
        unsigned long n = (unsigned long) v - 1;
+       unsigned long first = cpumask_first(cpu_online_mask);
 
-       if (!n)
+       if (n == first)
                show_cpu_summary(m, v);
        if (!machine_has_cpu_mhz)
                return 0;
@@ -204,6 +205,8 @@ static inline void *c_update(loff_t *pos)
 {
        if (*pos)
                *pos = cpumask_next(*pos - 1, cpu_online_mask);
+       else
+               *pos = cpumask_first(cpu_online_mask);
        return *pos < nr_cpu_ids ? (void *)*pos + 1 : NULL;
 }