linux/arch/ia64/include/asm
Luck, Tony c76f39bddb ia64: fix futex_atomic_cmpxchg_inatomic()
Michel Lespinasse cleaned up the futex calling conventions in commit
37a9d912b2 ("futex: Sanitize cmpxchg_futex_value_locked API").

But the ia64 implementation was subtly broken.  Gcc does not know that
register "r8" will be updated by the fault handler if the cmpxchg
instruction takes an exception.  So it feels safe in letting the
initialization of r8 slide to after the cmpxchg.  Result: we always
return 0 whether the user address faulted or not.

Fix by moving the initialization of r8 into the __asm__ code so gcc
won't move it.

Reported-by: <emeric.maschino@gmail.com>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42757
Tested-by: <emeric.maschino@gmail.com>
Acked-by: Michel Lespinasse <walken@google.com>
Cc: stable@vger.kernel.org # v2.6.39+
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-04-16 18:30:01 -07:00
..
native
sn Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
uv Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
xen xen/enlighten: Expose MWAIT and MWAIT_LEAF if hypervisor OKs it. 2012-03-10 12:44:44 -05:00
acpi-ext.h
acpi.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
agp.h
asm-offsets.h
asmmacro.h
atomic.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
auxvec.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
barrier.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
bitops.h asm-generic: add another generic ext2 atomic bitops 2011-07-26 16:49:46 -07:00
bitsperlong.h
break.h
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h
checksum.h
clocksource.h clocksource: Change __ARCH_HAS_CLOCKSOURCE_DATA to a CONFIG option 2011-07-21 13:34:05 -07:00
cmpxchg.h ia64: populate the cmpxchg header with appropriate code 2012-04-13 13:15:16 -04:00
cpu.h
cputime.h Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-01-06 08:44:54 -08:00
current.h
cyclone.h
delay.h
device.h iommu: Rename the DMAR and INTR_REMAP config options 2011-09-21 10:22:03 +02:00
div64.h
dma-mapping.h X86 & IA64: adapt for dma_map_ops changes 2012-03-28 16:36:31 +02:00
dma.h
dmi.h
elf.h
emergency-restart.h
errno.h
esi.h
exec.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
fb.h
fcntl.h
fpswa.h
fpu.h
ftrace.h
futex.h ia64: fix futex_atomic_cmpxchg_inatomic() 2012-04-16 18:30:01 -07:00
gcc_intrin.h
gpio.h [IA64] Hook up gpiolib support 2011-06-01 13:44:06 -07:00
hardirq.h
hpsim.h hpsim, initialize chip for assigned irqs 2012-03-08 12:26:30 -08:00
hugetlb.h
hw_irq.h ia64: Remove redundant declaration of irq_desc[] 2011-03-29 14:48:05 +02:00
ia64regs.h
idle.h
intel_intrin.h
intrinsics.h ia64: populate the cmpxchg header with appropriate code 2012-04-13 13:15:16 -04:00
io.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
ioctl.h
ioctls.h
iommu_table.h
iommu.h iommu: Add option to group multi-function devices 2011-11-15 12:22:31 +01:00
iosapic.h
ipcbuf.h consolidate a bunch of ipcbuf.h instances 2012-01-03 22:55:18 -05:00
irq_regs.h
irq.h
irqflags.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
Kbuild
kdebug.h
kexec.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
kmap_types.h
kprobes.h
kregs.h
kvm_host.h KVM: Introduce kvm_memory_slot::arch and move lpage_info into it 2012-03-08 14:10:22 +02:00
kvm_para.h
kvm.h KVM: provide synchronous registers in kvm_run 2012-03-05 14:52:22 +02:00
libata-portmap.h
linkage.h
local64.h
local.h
machvec_dig_vtd.h
machvec_dig.h
machvec_hpsim.h
machvec_hpzx1_swiotlb.h
machvec_hpzx1.h
machvec_init.h
machvec_sn2.h
machvec_uv.h
machvec_xen.h
machvec.h
mc146818rtc.h
mca_asm.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
mca.h
meminit.h
mman.h
mmu_context.h
mmu.h
mmzone.h
module.h
msgbuf.h
msidef.h
mutex.h
nodedata.h
numa.h
page.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
pal.h Fix common misspellings 2011-03-31 11:26:23 -03:00
param.h
paravirt_patch.h
paravirt_privop.h
paravirt.h static keys: Introduce 'struct static_key', static_key_true()/false() and static_key_slow_[inc|dec]() 2012-02-24 10:05:59 +01:00
parport.h
patch.h
pci.h Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
percpu.h
perfmon_default_smpl.h Fix common misspellings 2011-03-31 11:26:23 -03:00
perfmon.h
pgalloc.h
pgtable.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
poll.h
posix_types.h ia64: Use generic posix_types.h 2012-02-14 12:01:28 -08:00
processor.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
ptrace_offsets.h
ptrace.h Audit: push audit success and retcode into arch ptrace.h 2012-01-17 16:16:56 -05:00
pvclock-abi.h
resource.h
rse.h
rwsem.h
sal.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
scatterlist.h
sections.h
segment.h
sembuf.h
serial.h
setup.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
smp.h
socket.h net: Add framework to allow sending packets with customized CRC. 2012-02-24 01:37:35 -08:00
sockios.h
sparsemem.h
spinlock_types.h
spinlock.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
stat.h
statfs.h
string.h
swab.h
swiotlb.h
switch_to.h Disintegrate asm/system.h for IA64 2012-03-28 18:30:02 +01:00
sync_bitops.h
syscall.h
termbits.h
termios.h
thread_info.h freezer: remove now unused TIF_FREEZE 2011-11-21 12:32:25 -08:00
timex.h
tlb.h ia64: mmu_gather rework 2011-05-25 08:39:15 -07:00
tlbflush.h
topology.h
types.h consolidate umode_t declarations 2012-01-03 22:55:17 -05:00
uaccess.h
ucontext.h
unaligned.h
uncached.h
unistd.h ia64: Add accept4() syscall 2012-01-09 12:55:10 -08:00
unwind.h
user.h
ustack.h
vga.h
xor.h