- percpusize = L1_CACHE_ALIGN(offsetof(typeof(*percpu), lp_cntr[num]));
- stats->ls_percpu_size = num_online_cpus() * percpusize;
+ if (flags & LPROCFS_STATS_FLAG_NOPERCPU) {
+ stats->ls_flags = flags;
+ spin_lock_init(&stats->ls_lock);
+ /* Use this lock only if there are no percpu areas */
+ } else {
+ stats->ls_flags = 0;
+ }
+
+ percpusize = offsetof(typeof(*percpu), lp_cntr[num]);
+ if (num_cpu > 1)
+ percpusize = L1_CACHE_ALIGN(percpusize);
+
+ stats->ls_percpu_size = num_cpu * percpusize;