Thomas Gleixner
7a5c2b73e5
ARM: futex: Address build warning
...
[ Upstream commit 8101b5a1531f3390b3a69fa7934c70a8fd6566ad ]
Stephen reported the following build warning on a ARM multi_v7_defconfig
build with GCC 9.2.1:
kernel/futex.c: In function 'do_futex':
kernel/futex.c:1676:17: warning: 'oldval' may be used uninitialized in this function [-Wmaybe-uninitialized]
1676 | return oldval == cmparg;
| ~~~~~~~^~~~~~~~~
kernel/futex.c:1652:6: note: 'oldval' was declared here
1652 | int oldval, ret;
| ^~~~~~
introduced by commit a08971e9488d ("futex: arch_futex_atomic_op_inuser()
calling conventions change").
While that change should not make any difference it confuses GCC which
fails to work out that oldval is not referenced when the return value is
not zero.
GCC fails to properly analyze arch_futex_atomic_op_inuser(). It's not the
early return, the issue is with the assembly macros. GCC fails to detect
that those either set 'ret' to 0 and set oldval or set 'ret' to -EFAULT
which makes oldval uninteresting. The store to the callsite supplied oldval
pointer is conditional on ret == 0.
The straight forward way to solve this is to make the store unconditional.
Aside of addressing the build warning this makes sense anyway because it
removes the conditional from the fastpath. In the error case the stored
value is uninteresting and the extra store does not matter at all.
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lkml.kernel.org/r/87pncao2ph.fsf@nanos.tec.linutronix.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-05-27 16:41:50 +02:00
..
hardware
ARM: SoC platform updates for v4.9
2016-10-07 21:18:42 -07:00
mach
ARM: Make PCI I/O space optional
2016-06-21 10:54:29 -05:00
xen
xen: avoid type warning in xchg_xen_ulong
2018-04-13 19:48:25 +02:00
arch_gicv3.h
KVM updates for v4.9-rc1
2016-10-06 10:49:01 -07:00
arch_timer.h
clocksource: arch_timer: Fix code to use physical timers when requested
2014-12-04 23:30:26 -08:00
arm-cci.h
arm-cci: Get rid of secure transactions for PMU driver
2015-03-27 13:44:35 +00:00
asm-offsets.h
assembler.h
ARM: 8796/1: spectre-v1,v1.1: provide helpers for address sanitization
2019-02-20 10:18:26 +01:00
atomic.h
locking/atomic: Remove linux/atomic.h:atomic_fetch_or()
2016-06-16 10:48:32 +02:00
auxvec.h
ARM: 8329/1: miscellaneous vdso infrastructure, preparation
2015-03-27 22:20:45 +00:00
barrier.h
ARM: avoid Cortex-A9 livelock on tight dmb loops
2019-04-05 22:29:13 +02:00
bitops.h
ARM: 8417/1: refactor bitops functions with BIT_MASK() and BIT_WORD()
2015-08-18 14:00:30 +01:00
bitrev.h
ARM: 8287/1: add bitrev.h file to support rbit instruction
2015-01-16 14:06:18 +00:00
bL_switcher.h
bug.h
ARM: 8455/1: define __BUG as asm(BUG_INSTR) without CONFIG_BUG
2015-12-03 00:02:29 +00:00
bugs.h
ARM: bugs: hook processor bug checking into SMP and suspend paths
2018-11-23 08:20:37 +01:00
cache.h
cacheflush.h
ARM: 8601/1: Remove unused secure_flush_area API
2016-08-26 15:11:17 +01:00
cachetype.h
ARM: 8604/1: V7M: Add support for reading the CTR with read_cpuid_cachetype()
2016-09-06 15:51:07 +01:00
checksum.h
ipv6: Pass proto to csum_ipv6_magic as __u8 instead of unsigned short
2016-03-13 23:55:13 -04:00
clocksource.h
arm/arm64: arch_timer: Use archdata to indicate vdso suitability
2016-09-23 17:19:25 +01:00
cmpxchg.h
ARM: 8443/1: Adding support for atomic half word exchange
2015-10-09 16:22:54 +01:00
compiler.h
ARM: 8300/1: teach __asmeq that r11 == fp and r12 == ip
2015-02-10 10:23:11 +00:00
cp15.h
ARM: vdso: Remove dependency with the arch_timer driver internals
2019-05-31 06:48:14 -07:00
cpu.h
cpuidle.h
ARM: cpuidle: add const qualifier to cpuidle_ops member in structures
2016-04-20 06:59:10 +02:00
cputype.h
ARM: split out processor lookup
2019-02-20 10:18:27 +01:00
cti.h
dcc.h
ARM: tty: Move HVC DCC assembly to arch/arm
2014-05-28 13:33:18 -07:00
delay.h
ARM: fix delays
2016-10-06 08:45:40 +01:00
device.h
arm: introduce is_device_dma_coherent
2014-12-04 12:41:50 +00:00
div64.h
ARM: 8504/1: __arch_xprod_64(): small optimization
2016-02-11 15:33:37 +00:00
dma-contiguous.h
dma-iommu.h
ARM: 8347/1: dma-mapping: fix off-by-one check in arm_setup_iommu_dma_ops
2015-05-03 23:21:55 +01:00
dma-mapping.h
ARM: 8617/1: dma: fix dma_max_pfn()
2016-09-29 16:57:44 +01:00
dma.h
remove <asm/scatterlist.h>
2015-05-05 13:35:39 -06:00
domain.h
ARM: 8573/1: domain: move {set,get}_domain under config guard
2016-05-05 19:03:02 +01:00
ecard.h
edac.h
EDAC: Cleanup atomic_scrub mess
2015-05-28 15:31:53 +02:00
efi.h
efi: Convert efi_call_virt() to efi_call_virt_pointer()
2016-06-27 13:06:56 +02:00
elf.h
arm: move ELF_ET_DYN_BASE to 4MB
2017-07-21 07:42:21 +02:00
entry-macro-multi.S
ARM: replace BSYM() with badr assembly macro
2015-05-08 17:33:50 +01:00
exception.h
arch, ftrace: for KASAN put hard/soft IRQ entries into separate sections
2016-03-25 16:37:42 -07:00
fb.h
fiq.h
firmware.h
ARM: EXYNOS: add exynos_get_boot_addr() helper
2015-06-06 02:17:56 +09:00
fixmap.h
ARM: add support for generic early_ioremap/early_memremap
2015-12-13 19:18:28 +01:00
flat.h
ARM: 8594/1: enable binfmt_flat on systems with an MMU
2016-08-12 16:47:05 +01:00
floppy.h
ARM: 8584/1: floppy: avoid gcc-6 warning
2016-07-02 11:02:13 +01:00
fncpy.h
fpstate.h
ftrace.h
ARM: 8632/1: ftrace: fix syscall name matching
2017-08-11 08:49:36 -07:00
futex.h
ARM: futex: Address build warning
2020-05-27 16:41:50 +02:00
glue-cache.h
ARM: 8607/1: V7M: Wire up caches for V7M processors with cache support.
2016-09-06 15:51:08 +01:00
glue-df.h
ARM: 8065/1: remove last use of CONFIG_CPU_ARM710
2014-05-30 01:12:30 +01:00
glue-pf.h
glue-proc.h
ARM: 8103/1: save/restore Cortex-A9 CP15 registers on suspend/resume
2014-07-18 12:29:37 +01:00
glue.h
gpio.h
ARM: delete old reference to ARM_GPIOLIB_COMPLEX
2014-06-30 21:37:39 +02:00
hardirq.h
ARM: prevent tracing IPI_CPU_BACKTRACE
2019-06-22 08:17:12 +02:00
highmem.h
kmap_atomic_to_page() has no users, remove it
2015-11-09 15:11:24 -08:00
hugetlb-3level.h
hugetlb.h
mm/hugetlb: remove arch_prepare/release_hugepage from arch headers
2015-06-25 17:00:35 -07:00
hw_breakpoint.h
ARM: 8598/1: remove traces of perf_ops_bp
2016-08-23 10:09:23 +01:00
hw_irq.h
ARM: Remove ununsed set_irq_flags
2015-09-16 16:53:39 +02:00
hwcap.h
hypervisor.h
ide.h
idmap.h
insn.h
ARM: kprobes: enable OPTPROBES for ARM 32
2015-01-13 16:10:17 +00:00
io.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2016-07-28 14:22:25 -07:00
irq.h
ARM: 8824/1: fix a migrating irq bug when hotplug cpu
2019-03-23 13:19:42 +01:00
irq_work.h
arm: Tell irq work about self IPI support
2014-09-13 18:38:39 +02:00
irqflags.h
ARM: 8422/1: enable imprecise aborts during early kernel startup
2015-09-22 08:13:56 +01:00
jump_label.h
locking/static_keys: Add a new static_key interface
2015-08-03 11:34:15 +02:00
Kbuild
ARM: 8715/1: add a private asm/unaligned.h
2017-11-08 10:08:32 +01:00
kexec.h
ARM: kexec: fix kexec for Keystone 2
2016-08-02 19:35:29 -04:00
kgdb.h
ARM: 8764/1: kgdb: fix NUMREGBYTES so that gdb_regs[] is the correct size
2018-07-03 11:23:08 +02:00
kmap_types.h
kprobes.h
ARM: optprobes: execute instruction during restoring if possible.
2015-01-14 12:24:52 +00:00
kvm_arm.h
arm: KVM: Survive unknown traps from guests
2017-12-14 09:28:19 +01:00
kvm_asm.h
ARM: KVM: invalidate BTB on guest exit for Cortex-A12/A17
2018-11-23 08:20:38 +01:00
kvm_coproc.h
KVM: arm: plug potential guest hardware debug leakage
2017-05-25 15:44:44 +02:00
kvm_emulate.h
arm: KVM: Add Virtual Abort injection helper
2016-09-08 12:53:00 +02:00
kvm_host.h
ARM: KVM: report support for SMCCC_ARCH_WORKAROUND_1
2018-11-23 08:20:39 +01:00
kvm_hyp.h
arm/arm64: KVM: Perform local TLB invalidation when multiplexing vcpus on a single CPU
2016-11-04 17:56:28 +00:00
kvm_mmio.h
KVM: arm/arm64: Export mmio_read/write_bus
2016-05-20 15:39:42 +02:00
kvm_mmu.h
ARM: spectre-v2: KVM: invalidate icache on guest exit for Brahma B15
2018-11-23 08:20:38 +01:00
limits.h
linkage.h
mach-types.h
mc146818rtc.h
mcpm.h
ARM: MCPM: remove residency argument from mcpm_cpu_suspend()
2015-05-06 11:47:10 -04:00
mcs_spinlock.h
ARM: 8098/1: mcs lock: implement wfe-based polling for MCS locking
2014-07-18 12:29:35 +01:00
memblock.h
ARM: 8025/1: Get rid of meminfo
2014-06-01 01:17:12 +01:00
memory.h
ARM: 8589/1: asm/memory.h: remove dead definitions
2016-08-12 16:47:02 +01:00
mmu.h
ARM: 8329/1: miscellaneous vdso infrastructure, preparation
2015-03-27 22:20:45 +00:00
mmu_context.h
ARM: Hide finish_arch_post_lock_switch() from modules
2016-05-13 16:12:53 +02:00
module.h
ARM: 8662/1: module: split core and init PLT sections
2017-05-25 15:44:44 +02:00
mpu.h
mtd-xip.h
mutex.h
neon.h
nwflash.h
opcodes-sec.h
opcodes-virt.h
opcodes.h
outercache.h
ARM: move heavy barrier support out of line
2015-07-25 15:28:05 +01:00
page-nommu.h
asm-generic: page.h: Remove useless get_user_page and free_user_page
2016-02-26 15:24:55 +01:00
page.h
paravirt.h
arm: introduce CONFIG_PARAVIRT, PARAVIRT_TIME_ACCOUNTING and pv_time_ops
2015-12-21 14:40:54 +00:00
patch.h
ARM: probes: move all probe code to dedicate directory
2015-01-09 09:36:50 +00:00
pci.h
PCI: Move pci_dma_* helpers to common code
2016-03-07 10:40:02 -06:00
percpu.h
ARM: 8174/1: Use global stack register variable for percpu
2014-11-13 23:58:06 +00:00
perf_event.h
arm: perf: Fix callchain parse error with kernel tracepoint events
2015-05-27 16:12:05 +01:00
pgalloc.h
arm: get rid of superfluous __GFP_REPEAT
2016-07-26 16:19:19 -07:00
pgtable-2level-hwdef.h
ARM: 8612/1: LPAE: initialize cache policy correctly
2016-09-12 12:12:30 +01:00
pgtable-2level-types.h
pgtable-2level.h
ARM: 8578/1: mm: ensure pmd_present only checks the valid bit
2016-06-09 17:51:47 +01:00
pgtable-3level-hwdef.h
ARM: 8612/1: LPAE: initialize cache policy correctly
2016-09-12 12:12:30 +01:00
pgtable-3level-types.h
pgtable-3level.h
ARM: 8579/1: mm: Fix definition of pmd_mknotpresent
2016-06-09 17:51:47 +01:00
pgtable-hwdef.h
pgtable-nommu.h
mm: make FIRST_USER_ADDRESS unsigned long on all archs
2015-02-11 17:06:03 -08:00
pgtable.h
- ARM: GICv3 ITS emulation and various fixes. Removal of the old
2016-08-02 16:11:27 -04:00
probes.h
ARM: optprobes: execute instruction during restoring if possible.
2015-01-14 12:24:52 +00:00
proc-fns.h
ARM: spectre-v2: per-CPU vtables to work around big.Little systems
2019-02-20 10:18:27 +01:00
processor.h
ARM: avoid Cortex-A9 livelock on tight dmb loops
2019-04-05 22:29:13 +02:00
procinfo.h
prom.h
psci.h
ARM: SoC cleanups for v4.5
2016-01-20 17:55:20 -08:00
ptrace.h
ARM: save and reset the address limit when entering an exception
2016-07-07 16:01:01 +01:00
sections.h
ARM: 8518/1: Use correct symbols for XIP_KERNEL
2016-02-11 15:43:14 +00:00
setup.h
ARM: 8495/1: ATAGS: move save_atags() to arch/arm/include/asm/setup.h
2016-01-04 11:26:00 +00:00
shmparam.h
signal.h
smp.h
ARM: 8423/1: add const qualifier to smp_operations member in structures
2015-09-22 08:13:57 +01:00
smp_plat.h
ARM: 8392/3: smp: Only expose /sys/.../cpuX/online if hotpluggable
2015-07-31 18:58:30 +01:00
smp_scu.h
ARM: make it easier to check the CPU part number correctly
2014-07-18 12:29:02 +01:00
smp_twd.h
sparsemem.h
ARM: 8411/1: Add default SPARSEMEM settings
2016-02-16 16:35:21 +00:00
spinlock.h
locking/spinlock, arch: Update and fix spin_unlock_wait() implementations
2016-06-14 11:55:15 +02:00
spinlock_types.h
stackprotector.h
stacktrace.h
ARM: 8070/1: Introduce arm_get_current_stack_frame()
2014-07-18 12:29:11 +01:00
stage2_pgtable.h
kvm-arm: arm32: Introduce stage2 page table helpers
2016-04-21 14:57:26 +02:00
string.h
suspend.h
ARM: 8847/1: pm: fix HYP/SVC mode mismatch when MCPM is used
2020-01-29 10:24:18 +01:00
swab.h
switch_to.h
sched, arm: Remove finish_arch_switch()
2015-08-04 09:37:52 +02:00
sync_bitops.h
syscall.h
ARM: 8152/1: Convert pr_warning to pr_warn
2014-09-26 14:39:53 +01:00
system_info.h
ARM: 8355/1: arch: Show the serial number from devicetree in cpuinfo
2015-05-08 10:42:35 +01:00
system_misc.h
ARM: spectre-v2: harden user aborts in kernel space
2018-11-23 08:20:38 +01:00
tcm.h
therm.h
thread_info.h
ARM: 8791/1: vfp: use __copy_to_user() when saving VFP state
2019-02-20 10:18:25 +01:00
thread_notify.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
tls.h
ARM: 8178/1: fix set_tls for !CONFIG_KUSER_HELPERS
2014-09-30 16:55:23 +01:00
topology.h
sched/topology: Rename topology_thread_cpumask() to topology_sibling_cpumask()
2015-05-27 15:22:15 +02:00
traps.h
trusted_foundations.h
treewide: remove redundant #include <linux/kconfig.h>
2016-10-11 15:06:33 -07:00
types.h
uaccess.h
ARM: 8813/1: Make aligned 2-byte getuser()/putuser() atomic on ARMv6+
2019-12-21 10:40:52 +01:00
ucontext.h
unaligned.h
ARM: 8715/1: add a private asm/unaligned.h
2017-11-08 10:08:32 +01:00
unified.h
ARM: replace BSYM() with badr assembly macro
2015-05-08 17:33:50 +01:00
unistd.h
ARM: wire up new pkey syscalls
2016-10-19 10:18:47 +01:00
unwind.h
uprobes.h
user.h
v7m.h
ARM: 8603/1: V7M: Add addresses for mem-mapped V7M cache operations
2016-09-06 15:51:06 +01:00
vdso.h
ARM: 8748/1: mm: Define vdso_start, vdso_end as array
2018-05-30 07:50:38 +02:00
vdso_datapage.h
ARM: 8329/1: miscellaneous vdso infrastructure, preparation
2015-03-27 22:20:45 +00:00
vfp.h
ARM: vfp: Add vfp_disable for problematic platforms
2015-05-20 15:07:00 -07:00
vfpmacros.h
vga.h
virt.h
arm/arm64: KVM: Export __hyp_text_start/end symbols
2016-07-03 23:41:27 +02:00
word-at-a-time.h
ARM: 8322/1: keep .text and .fixup regions closer together
2015-03-29 23:11:56 +01:00
xor.h