Tejun Heo
b339752d05
cpumask: fix spurious cpumask_of_node() on non-NUMA multi-node configs
...
When !NUMA, cpumask_of_node(@node) equals cpu_online_mask regardless of
@node. The assumption seems that if !NUMA, there shouldn't be more than
one node and thus reporting cpu_online_mask regardless of @node is
correct. However, that assumption was broken years ago to support
DISCONTIGMEM and whether a system has multiple nodes or not is
separately controlled by NEED_MULTIPLE_NODES.
This means that, on a system with !NUMA && NEED_MULTIPLE_NODES,
cpumask_of_node() will report cpu_online_mask for all possible nodes,
indicating that the CPUs are associated with multiple nodes which is an
impossible configuration.
This bug has been around forever but doesn't look like it has caused any
noticeable symptoms. However, it triggers a WARN recently added to
workqueue to verify NUMA affinity configuration.
Fix it by reporting empty cpumask on non-zero nodes if !NUMA.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-and-tested-by: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2017-08-28 16:13:16 -07:00
..
bitops
bitops: Do not default to __clear_bit() for __clear_bit_unlock()
2016-03-21 10:50:48 +01:00
4level-fixup.h
asm-generic: introduce 5level-fixup.h
2017-03-09 11:48:47 -08:00
5level-fixup.h
asm-generic: introduce 5level-fixup.h
2017-03-09 11:48:47 -08:00
asm-offsets.h
asm-prototypes.h
asm-prototypes: Clear any CPP defines before declaring the functions
2017-01-05 12:57:42 +01:00
atomic-long.h
locking/atomic: Introduce inc/dec variants for the atomic_fetch_$op() API
2016-07-07 09:16:20 +02:00
atomic.h
openrisc: add optimized atomic operations
2017-02-25 04:14:06 +09:00
atomic64.h
locking/atomic: Implement atomic{,64,_long}_fetch_{add,sub,and,andnot,or,xor}{,_relaxed,_acquire,_release}()
2016-06-16 10:48:32 +02:00
audit_change_attr.h
audit_dir_write.h
audit_read.h
audit_signal.h
audit_write.h
barrier.h
locking/spinlock, arch: Update and fix spin_unlock_wait() implementations
2016-06-14 11:55:15 +02:00
bitops.h
bitsperlong.h
bug.h
asm-generic/bug.h: declare struct pt_regs; before function prototype
2017-07-10 16:32:34 -07:00
bugs.h
cache.h
cacheflush.h
checksum.h
ipv4: Update parameters for csum_tcpudp_magic to their original types
2016-03-13 23:55:13 -04:00
clkdev.h
cmpxchg-local.h
cmpxchg.h
current.h
delay.h
device.h
div64.h
__div64_32(): make it overridable at compile time
2015-11-16 14:42:12 -05:00
dma-contiguous.h
dma.h
early_ioremap.h
emergency-restart.h
exec.h
export.h
modversions: treat symbol CRCs as 32 bit quantities
2017-02-03 08:28:25 -08:00
extable.h
add asm-generic/extable.h
2017-03-27 20:27:28 -04:00
fb.h
fixmap.h
asm-generic: Fix local variable shadow in __set_fixmap_offset
2016-02-16 15:10:44 +00:00
ftrace.h
futex.h
asm-generic/futex: Re-enable preemption in futex_atomic_cmpxchg_inatomic()
2016-04-21 11:06:09 +02:00
getorder.h
gpio.h
gpio: allow setting ARCH_NR_GPIOS from Kconfig
2016-02-19 00:22:54 +01:00
hardirq.h
hugetlb.h
mm/hugetlb: allow architectures to override huge_pte_clear()
2017-07-06 16:24:34 -07:00
hw_irq.h
ide_iops.h
int-ll64.h
io.h
asm-generic/io.h: add io{read,write}64 accessors
2016-05-31 16:41:50 +08:00
ioctl.h
iomap.h
asm-generic/io.h: add io{read,write}64 accessors
2016-05-31 16:41:50 +08:00
irq.h
irq_regs.h
irq_work.h
irqflags.h
kdebug.h
kmap_types.h
kprobes.h
kprobes: move kprobe declarations to asm-generic/kprobes.h
2017-02-27 18:43:45 -08:00
kvm_para.h
linkage.h
local.h
local64.h
mcs_spinlock.h
memory_model.h
mm: add PHYS_PFN, use it in __phys_to_pfn()
2016-01-14 16:00:49 -08:00
mm-arch-hooks.h
mm_hooks.h
mm/gup: Drop the arch_pte_access_permitted() MMU callback
2017-03-18 09:48:01 +01:00
mmu.h
mmu_context.h
module.h
msi.h
page.h
asm-generic: page.h: Remove useless get_user_page and free_user_page
2016-02-26 15:24:55 +01:00
param.h
parport.h
pci.h
pci_iomap.h
percpu.h
percpu: use notrace variant of preempt_disable/preempt_enable
2016-11-08 10:29:44 +01:00
pgalloc.h
pgtable-nop4d-hack.h
asm-generic: introduce __ARCH_USE_5LEVEL_HACK
2017-03-09 11:48:47 -08:00
pgtable-nop4d.h
asm-generic: introduce <asm-generic/pgtable-nop4d.h>
2017-03-09 11:48:47 -08:00
pgtable-nopmd.h
pgtable-nopud.h
asm-generic: introduce <asm-generic/pgtable-nop4d.h>
2017-03-09 11:48:47 -08:00
pgtable.h
mm/gup: Move permission checks into helpers
2017-03-18 09:48:01 +01:00
preempt.h
sched/preempt: Fix preempt_count manipulations
2016-05-17 12:24:21 +02:00
ptrace.h
qrwlock.h
locking/qrwlock: Fix write unlock bug on big endian systems
2016-08-10 14:13:27 +02:00
qrwlock_types.h
qspinlock.h
locking/qspinlock: Use atomic_sub_return_release() in queued_spin_unlock()
2016-06-08 15:17:01 +02:00
qspinlock_types.h
locking/qspinlock: Move __ARCH_SPIN_LOCK_UNLOCKED to qspinlock_types.h
2016-02-29 10:02:43 +01:00
resource.h
rwsem.h
locking/rwsem: Remove unnecessary atomic_long_t casts
2017-01-20 09:46:44 +01:00
seccomp.h
seccomp: Get compat syscalls from asm-generic header
2016-05-13 14:02:00 +02:00
sections.h
mm: fix section name for .data..ro_after_init
2017-03-31 17:13:30 -07:00
segment.h
serial.h
set_memory.h
treewide: move set_memory_* functions away from cacheflush.h
2017-05-08 17:15:13 -07:00
signal.h
simd.h
sizes.h
spinlock.h
statfs.h
string.h
switch_to.h
syscall.h
syscalls.h
termios-base.h
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
2016-12-24 11:46:01 -08:00
termios.h
Replace <asm/uaccess.h> with <linux/uaccess.h> globally
2016-12-24 11:46:01 -08:00
timex.h
tlb.h
mm: fix MADV_[FREE|DONTNEED] TLB flush miss problem
2017-08-10 15:54:07 -07:00
tlbflush.h
topology.h
cpumask: fix spurious cpumask_of_node() on non-NUMA multi-node configs
2017-08-28 16:13:16 -07:00
trace_clock.h
uaccess.h
kill strlen_user()
2017-05-15 23:40:22 -04:00
unaligned.h
unistd.h
user.h
vga.h
vmlinux.lds.h
kbuild: linker script do not match C names unless LD_DEAD_CODE_DATA_ELIMINATION is configured
2017-08-10 00:57:42 +09:00
vtime.h
word-at-a-time.h
xor.h