s390/appldata_os: fix cpu array size calculation
authorGerald Schaefer <gerald.schaefer@de.ibm.com>
Fri, 28 Feb 2014 16:35:52 +0000 (17:35 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 7 Mar 2014 14:25:55 +0000 (15:25 +0100)
The cpu array size calculation uses the NR_CPUS config option, which
was recently increased from 64 to 256. With a value of 256, the cpu
array will no longer fit into one APPLDATA record and loading the
appldata_os module fails with the following error:
could not insert 'appldata_os': Cannot allocate memory

Use num_possible_cpus() instead of NR_CPUS. For z/VM, this will still
result in a value of 64. This is not true for LPAR, but the appldata
feature is not available for LPAR.

Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/appldata/appldata_os.c

index de8e2b3..69b23b2 100644 (file)
@@ -171,7 +171,7 @@ static int __init appldata_os_init(void)
        int rc, max_size;
 
        max_size = sizeof(struct appldata_os_data) +
-                  (NR_CPUS * sizeof(struct appldata_os_per_cpu));
+                  (num_possible_cpus() * sizeof(struct appldata_os_per_cpu));
        if (max_size > APPLDATA_MAX_REC_SIZE) {
                pr_err("Maximum OS record size %i exceeds the maximum "
                       "record size %i\n", max_size, APPLDATA_MAX_REC_SIZE);