mirror of https://github.com/torvalds/linux.git
include/asm-generic/qrwlock.h was trying to get arch_spin_is_locked via
asm-generic/qspinlock.h. However, this does not work because architectures
might be using queued rwlocks but not queued spinlocks (csky), or because they
might be defining their own queued_* macros before including asm/qspinlock.h.
To fix this, ensure that asm/spinlock.h always includes qrwlock.h after
defining arch_spin_is_locked (either directly for csky, or via
asm/qspinlock.h for other architectures). The only inclusion elsewhere
is in kernel/locking/qrwlock.c. That one is really unnecessary because
the file is only compiled in SMP configurations (config QUEUED_RWLOCKS
depends on SMP) and in that case linux/spinlock.h already includes
asm/qrwlock.h if needed, via asm/spinlock.h.
Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Waiman Long <longman@redhat.com>
Fixes:
|
||
|---|---|---|
| .. | ||
| Kbuild | ||
| asm-offsets.h | ||
| asm-uaccess.h | ||
| asmmacro.h | ||
| atomic.h | ||
| barrier.h | ||
| bitops.h | ||
| bootparam.h | ||
| bugs.h | ||
| cache.h | ||
| cacheasm.h | ||
| cacheflush.h | ||
| checksum.h | ||
| cmpxchg.h | ||
| coprocessor.h | ||
| core.h | ||
| current.h | ||
| delay.h | ||
| dma.h | ||
| elf.h | ||
| fixmap.h | ||
| flat.h | ||
| ftrace.h | ||
| futex.h | ||
| highmem.h | ||
| hw_breakpoint.h | ||
| initialize_mmu.h | ||
| io.h | ||
| irq.h | ||
| irqflags.h | ||
| jump_label.h | ||
| kasan.h | ||
| kmem_layout.h | ||
| linkage.h | ||
| mmu.h | ||
| mmu_context.h | ||
| mxregs.h | ||
| nommu_context.h | ||
| page.h | ||
| pci-bridge.h | ||
| pci.h | ||
| perf_event.h | ||
| pgalloc.h | ||
| pgtable.h | ||
| platform.h | ||
| processor.h | ||
| ptrace.h | ||
| regs.h | ||
| seccomp.h | ||
| serial.h | ||
| shmparam.h | ||
| signal.h | ||
| smp.h | ||
| spinlock.h | ||
| spinlock_types.h | ||
| stackprotector.h | ||
| stacktrace.h | ||
| string.h | ||
| switch_to.h | ||
| syscall.h | ||
| sysmem.h | ||
| thread_info.h | ||
| timex.h | ||
| tlb.h | ||
| tlbflush.h | ||
| traps.h | ||
| uaccess.h | ||
| ucontext.h | ||
| unaligned.h | ||
| unistd.h | ||
| vectors.h | ||
| vermagic.h | ||
| vmalloc.h | ||