Revision 4d59b6ccf000862beed6fc0765d3209f98a8d8a2 authored by Tejun Heo on 08 February 2017, 22:30:56 UTC, committed by Linus Torvalds on 08 February 2017, 23:41:43 UTC
Commit 513e3d2d11c9 ("cpumask: always use nr_cpu_ids in formatting and parsing functions") converted both cpumask printing and parsing functions to use nr_cpu_ids instead of nr_cpumask_bits. While this was okay for the printing functions as it just picked one of the two output formats that we were alternating between depending on a kernel config, doing the same for parsing wasn't okay. nr_cpumask_bits can be either nr_cpu_ids or NR_CPUS. We can always use nr_cpu_ids but that is a variable while NR_CPUS is a constant, so it can be more efficient to use NR_CPUS when we can get away with it. Converting the printing functions to nr_cpu_ids makes sense because it affects how the masks get presented to userspace and doesn't break anything; however, using nr_cpu_ids for parsing functions can incorrectly leave the higher bits uninitialized while reading in these masks from userland. As all testing and comparison functions use nr_cpumask_bits which can be larger than nr_cpu_ids, the parsed cpumasks can erroneously yield false negative results. This made the taskstats interface incorrectly return -EINVAL even when the inputs were correct. Fix it by restoring the parse functions to use nr_cpumask_bits instead of nr_cpu_ids. Link: http://lkml.kernel.org/r/20170206182442.GB31078@htj.duckdns.org Fixes: 513e3d2d11c9 ("cpumask: always use nr_cpu_ids in formatting and parsing functions") Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Martin Steigerwald <martin.steigerwald@teamix.de> Debugged-by: Ben Hutchings <ben.hutchings@codethink.co.uk> Cc: <stable@vger.kernel.org> [4.0+] Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 0911d00
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 10.0 KB |
Kconfig.arm | -rw-r--r-- | 7.6 KB |
Kconfig.powerpc | -rw-r--r-- | 1.6 KB |
Kconfig.x86 | -rw-r--r-- | 9.0 KB |
Makefile | -rw-r--r-- | 5.2 KB |
acpi-cpufreq.c | -rw-r--r-- | 24.9 KB |
amd_freq_sensitivity.c | -rw-r--r-- | 3.8 KB |
arm_big_little.c | -rw-r--r-- | 17.3 KB |
arm_big_little.h | -rw-r--r-- | 1.3 KB |
arm_big_little_dt.c | -rw-r--r-- | 2.6 KB |
at32ap-cpufreq.c | -rw-r--r-- | 3.1 KB |
blackfin-cpufreq.c | -rw-r--r-- | 5.0 KB |
brcmstb-avs-cpufreq.c | -rw-r--r-- | 27.7 KB |
cppc_cpufreq.c | -rw-r--r-- | 6.2 KB |
cpufreq-dt-platdev.c | -rw-r--r-- | 3.6 KB |
cpufreq-dt.c | -rw-r--r-- | 9.8 KB |
cpufreq-dt.h | -rw-r--r-- | 446 bytes |
cpufreq-nforce2.c | -rw-r--r-- | 9.0 KB |
cpufreq.c | -rw-r--r-- | 65.6 KB |
cpufreq_conservative.c | -rw-r--r-- | 9.2 KB |
cpufreq_governor.c | -rw-r--r-- | 16.4 KB |
cpufreq_governor.h | -rw-r--r-- | 5.6 KB |
cpufreq_governor_attr_set.c | -rw-r--r-- | 2.3 KB |
cpufreq_ondemand.c | -rw-r--r-- | 13.6 KB |
cpufreq_ondemand.h | -rw-r--r-- | 801 bytes |
cpufreq_performance.c | -rw-r--r-- | 1.5 KB |
cpufreq_powersave.c | -rw-r--r-- | 1.4 KB |
cpufreq_stats.c | -rw-r--r-- | 6.4 KB |
cpufreq_userspace.c | -rw-r--r-- | 4.0 KB |
cris-artpec3-cpufreq.c | -rw-r--r-- | 2.2 KB |
cris-etraxfs-cpufreq.c | -rw-r--r-- | 2.3 KB |
davinci-cpufreq.c | -rw-r--r-- | 4.0 KB |
dbx500-cpufreq.c | -rw-r--r-- | 2.2 KB |
e_powersaver.c | -rw-r--r-- | 10.8 KB |
elanfreq.c | -rw-r--r-- | 5.8 KB |
exynos5440-cpufreq.c | -rw-r--r-- | 12.1 KB |
freq_table.c | -rw-r--r-- | 8.9 KB |
gx-suspmod.c | -rw-r--r-- | 14.1 KB |
highbank-cpufreq.c | -rw-r--r-- | 2.8 KB |
ia64-acpi-cpufreq.c | -rw-r--r-- | 8.1 KB |
imx6q-cpufreq.c | -rw-r--r-- | 11.2 KB |
intel_pstate.c | -rw-r--r-- | 64.9 KB |
kirkwood-cpufreq.c | -rw-r--r-- | 4.7 KB |
longhaul.c | -rw-r--r-- | 25.3 KB |
longhaul.h | -rw-r--r-- | 8.5 KB |
longrun.c | -rw-r--r-- | 8.3 KB |
loongson1-cpufreq.c | -rw-r--r-- | 5.5 KB |
loongson2_cpufreq.c | -rw-r--r-- | 4.7 KB |
maple-cpufreq.c | -rw-r--r-- | 6.7 KB |
mt8173-cpufreq.c | -rw-r--r-- | 15.6 KB |
mvebu-cpufreq.c | -rw-r--r-- | 2.7 KB |
omap-cpufreq.c | -rw-r--r-- | 5.0 KB |
p4-clockmod.c | -rw-r--r-- | 7.1 KB |
pasemi-cpufreq.c | -rw-r--r-- | 6.6 KB |
pcc-cpufreq.c | -rw-r--r-- | 15.3 KB |
pmac32-cpufreq.c | -rw-r--r-- | 17.5 KB |
pmac64-cpufreq.c | -rw-r--r-- | 17.6 KB |
powernow-k6.c | -rw-r--r-- | 8.1 KB |
powernow-k7.c | -rw-r--r-- | 15.9 KB |
powernow-k7.h | -rw-r--r-- | 798 bytes |
powernow-k8.c | -rw-r--r-- | 31.0 KB |
powernow-k8.h | -rw-r--r-- | 6.6 KB |
powernv-cpufreq.c | -rw-r--r-- | 27.6 KB |
ppc_cbe_cpufreq.c | -rw-r--r-- | 4.0 KB |
ppc_cbe_cpufreq.h | -rw-r--r-- | 544 bytes |
ppc_cbe_cpufreq_pervasive.c | -rw-r--r-- | 2.9 KB |
ppc_cbe_cpufreq_pmi.c | -rw-r--r-- | 3.3 KB |
pxa2xx-cpufreq.c | -rw-r--r-- | 13.4 KB |
pxa3xx-cpufreq.c | -rw-r--r-- | 5.7 KB |
qoriq-cpufreq.c | -rw-r--r-- | 9.0 KB |
s3c2410-cpufreq.c | -rw-r--r-- | 3.6 KB |
s3c2412-cpufreq.c | -rw-r--r-- | 5.9 KB |
s3c2416-cpufreq.c | -rw-r--r-- | 12.2 KB |
s3c2440-cpufreq.c | -rw-r--r-- | 7.1 KB |
s3c24xx-cpufreq-debugfs.c | -rw-r--r-- | 4.5 KB |
s3c24xx-cpufreq.c | -rw-r--r-- | 15.7 KB |
s3c64xx-cpufreq.c | -rw-r--r-- | 5.4 KB |
s5pv210-cpufreq.c | -rw-r--r-- | 16.6 KB |
sa1100-cpufreq.c | -rw-r--r-- | 7.0 KB |
sa1110-cpufreq.c | -rw-r--r-- | 8.9 KB |
sc520_freq.c | -rw-r--r-- | 3.0 KB |
scpi-cpufreq.c | -rw-r--r-- | 3.0 KB |
sfi-cpufreq.c | -rw-r--r-- | 3.5 KB |
sh-cpufreq.c | -rw-r--r-- | 4.5 KB |
sparc-us2e-cpufreq.c | -rw-r--r-- | 8.8 KB |
sparc-us3-cpufreq.c | -rw-r--r-- | 5.2 KB |
spear-cpufreq.c | -rw-r--r-- | 5.9 KB |
speedstep-centrino.c | -rw-r--r-- | 13.9 KB |
speedstep-ich.c | -rw-r--r-- | 9.2 KB |
speedstep-lib.c | -rw-r--r-- | 11.6 KB |
speedstep-lib.h | -rw-r--r-- | 1.7 KB |
speedstep-smi.c | -rw-r--r-- | 9.6 KB |
sti-cpufreq.c | -rw-r--r-- | 7.0 KB |
tegra124-cpufreq.c | -rw-r--r-- | 4.8 KB |
tegra20-cpufreq.c | -rw-r--r-- | 5.5 KB |
unicore2-cpufreq.c | -rw-r--r-- | 1.9 KB |
vexpress-spc-cpufreq.c | -rw-r--r-- | 1.9 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...