Dave Airlie
4b527f25a4
locking/qspinlock: Pull in asm/byteorder.h to ensure correct endianness
...
This commit is not required upstream, but is required for the 4.9.y
stable series.
Upstream commit 101110f6271c ("Kbuild: always define endianess in
kconfig.h") ensures that either __LITTLE_ENDIAN or __BIG_ENDIAN is
defined to reflect the endianness of the target CPU architecture
regardless of whether or not <asm/byteorder.h> has been #included. The
upstream definition of 'struct qspinlock' relies on this property.
Unfortunately, the 4.9.y stable series does not provide this guarantee,
so the 'spin_unlock()' routine can erroneously treat the underlying
lockword as big-endian on little-endian architectures using native
qspinlock (i.e. x86_64 without PV) if the caller has not included
<asm/byteorder.h>. This can lead to hangs such as the one in
'i915_gem_request()' reported via bugzilla:
https://bugzilla.kernel.org/show_bug.cgi?id=202063
Fix the issue by ensuring that <asm/byteorder.h> is #included in
<asm/qspinlock_types.h>, where 'struct qspinlock' is defined.
Cc: <stable@vger.kernel.org> # 4.9
Signed-off-by: Dave Airlie <airlied@redhat.com>
[will: wrote commit message]
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-01-26 09:38:36 +01: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-offsets.h
asm-prototypes.h
asm-prototypes: Clear any CPP defines before declaring the functions
2017-01-12 11:39:07 +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
locking/atomic: Remove linux/atomic.h:atomic_fetch_or()
2016-06-16 10:48:32 +02: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 changes for 4.6
2016-03-24 23:13:48 -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
cputime.h
cputime_jiffies.h
cputime_nsecs.h
sched/cputime: Count actually elapsed irq & softirq time
2016-07-14 10:42:34 +02:00
current.h
delay.h
device.h
div64.h
dma-contiguous.h
dma.h
early_ioremap.h
emergency-restart.h
exec.h
export.h
Revert "default exported asm symbols to zero"
2016-12-07 08:39:00 -08: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
futex: Remove duplicated code and fix undefined behaviour
2018-05-19 10:27:00 +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
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
Kbuild.asm
kdebug.h
kmap_types.h
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/core, x86/mm/pkeys: Differentiate instruction fetches
2016-02-18 19:46:29 +01:00
mmu.h
mmu_context.h
module.h
msi.h
mutex-dec.h
locking/mutex: Optimize mutex_trylock() fast-path
2016-06-08 15:17:01 +02:00
mutex-null.h
mutex-xchg.h
locking/mutex: Optimize mutex_trylock() fast-path
2016-06-08 15:17:01 +02:00
mutex.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: make this_cpu_generic_read() atomic w.r.t. interrupts
2017-10-12 11:51:23 +02:00
pgalloc.h
pgtable-nopmd.h
pgtable-nopud.h
pgtable.h
ioremap: Update pgtable free interfaces with addr
2018-08-17 20:59:29 +02: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: Pull in asm/byteorder.h to ensure correct endianness
2019-01-26 09:38:36 +01:00
resource.h
rwsem.h
locking/rwsem: Remove rwsem_atomic_add() and rwsem_atomic_update()
2016-06-08 15:16:59 +02:00
seccomp.h
seccomp: Get compat syscalls from asm-generic header
2016-05-13 14:02:00 +02:00
sections.h
mm: kmemleak: scan .data.ro_after_init
2016-11-11 08:12:37 -08:00
segment.h
serial.h
siginfo.h
SIGNAL: Move generic copy_siginfo() to signal.h
2016-05-13 14:02:10 +02:00
signal.h
simd.h
sizes.h
spinlock.h
statfs.h
string.h
switch_to.h
syscall.h
syscalls.h
termios-base.h
termios.h
timex.h
tlb.h
mm/mmu_gather: track page size with mmu gather and force flush if page size change
2016-07-26 16:19:19 -07:00
tlbflush.h
topology.h
cpumask: fix spurious cpumask_of_node() on non-NUMA multi-node configs
2017-09-07 08:35:40 +02:00
trace_clock.h
uaccess-unaligned.h
uaccess.h
exceptions: detritus removal
2016-09-27 21:15:14 -04:00
unaligned.h
unistd.h
user.h
vga.h
vmlinux.lds.h
earlycon: Use a pointer table to fix __earlycon_table stride
2018-05-01 15:13:09 -07:00
vtime.h
word-at-a-time.h
xor.h