mirror of
https://github.com/torvalds/linux.git
synced 2026-11-05 21:52:02 +01:00
As discussed on LKML http://marc.info/?i=54611D86.4040306%40de.ibm.com ACCESS_ONCE might fail with specific compilers for non-scalar accesses. Here is a set of patches to tackle that problem. The first patch introduce READ_ONCE and ASSIGN_ONCE. If the data structure is larger than the machine word size memcpy is used and a warning is emitted. The next patches fix up several in-tree users of ACCESS_ONCE on non-scalar types. This merge does not yet contain a patch that forces ACCESS_ONCE to work only on scalar types. This is targetted for the next merge window as Linux next already contains new offenders regarding ACCESS_ONCE vs. non-scalar types. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (GNU/Linux) iQIcBAABAgAGBQJUkrVGAAoJEBF7vIC1phx8stkP/2LmN5y6LOseoEW06xa5MX4m cbIKsZNtsGHl7EDcTzzuWs6Sq5/Cj7V3yzeBF7QGbUKOqvFWU3jvpUBCCfjMg37C 77/Vf0ZPrxTXXxeJ4Ykdy2CGvuMtuYY9TWkrRNKmLU0xex7lGblEzCt9z6+mZviw 26/DN8ctjkHRvIUAi+7RfQBBc3oSMYAC1mzxYKBAsAFLV+LyFmsGU/4iofZMAsdt XFyVXlrLn0Bjx/MeceGkOlMDiVx4FnfccfFaD4hhuTLBJXWitkUK/MRa4JBiXWzH agY8942A8/j9wkI2DFp/pqZYqA/sTXLndyOWlhE//ZSti0n0BSJaOx3S27rTLkAc 5VmZEVyIrS3hyOpyyAi0sSoPkDnjeCHmQg9Rqn34/poKLd7JDrW2UkERNCf/T3eh GI2rbhAlZz3v5mIShn8RrxzslWYmOObpMr3HYNUdRk8YUfTf6d6aZ3txHp2nP4mD VBAEzsvP9rcVT2caVhU2dnBzeaZAj3zeDxBtjcb3X2osY9tI7qgLc9Fa/fWKgILk 2evkLcctsae2mlLNGHyaK3Dm/ZmYJv+57MyaQQEZNfZZgeB1y4k0DkxH4w1CFmCi s8XlH5voEHgnyjSQXXgc/PNVlkPAKr78ZyTiAfiKmh8rpe41/W4hGcgao7L9Lgiu SI0uSwKibuZt4dHGxQuG =IQ5o -----END PGP SIGNATURE----- Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/borntraeger/linux Pull ACCESS_ONCE cleanup preparation from Christian Borntraeger: "kernel: Provide READ_ONCE and ASSIGN_ONCE As discussed on LKML http://marc.info/?i=54611D86.4040306%40de.ibm.com ACCESS_ONCE might fail with specific compilers for non-scalar accesses. Here is a set of patches to tackle that problem. The first patch introduce READ_ONCE and ASSIGN_ONCE. If the data structure is larger than the machine word size memcpy is used and a warning is emitted. The next patches fix up several in-tree users of ACCESS_ONCE on non-scalar types. This does not yet contain a patch that forces ACCESS_ONCE to work only on scalar types. This is targetted for the next merge window as Linux next already contains new offenders regarding ACCESS_ONCE vs. non-scalar types" * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/borntraeger/linux: s390/kvm: REPLACE barrier fixup with READ_ONCE arm/spinlock: Replace ACCESS_ONCE with READ_ONCE arm64/spinlock: Replace ACCESS_ONCE READ_ONCE mips/gup: Replace ACCESS_ONCE with READ_ONCE x86/gup: Replace ACCESS_ONCE with READ_ONCE x86/spinlock: Replace ACCESS_ONCE with READ_ONCE mm: replace ACCESS_ONCE with READ_ONCE or barriers kernel: Provide READ_ONCE and ASSIGN_ONCE |
||
|---|---|---|
| .. | ||
| xen | ||
| alternative-asm.h | ||
| alternative.h | ||
| arch_timer.h | ||
| asm-offsets.h | ||
| assembler.h | ||
| atomic.h | ||
| barrier.h | ||
| bitops.h | ||
| cache.h | ||
| cacheflush.h | ||
| cachetype.h | ||
| cmpxchg.h | ||
| compat.h | ||
| compiler.h | ||
| cpu_ops.h | ||
| cpu.h | ||
| cpufeature.h | ||
| cpuidle.h | ||
| cputable.h | ||
| cputype.h | ||
| debug-monitors.h | ||
| device.h | ||
| dma-mapping.h | ||
| dmi.h | ||
| efi.h | ||
| elf.h | ||
| esr.h | ||
| exception.h | ||
| exec.h | ||
| fb.h | ||
| fixmap.h | ||
| fpsimd.h | ||
| fpsimdmacros.h | ||
| ftrace.h | ||
| futex.h | ||
| hardirq.h | ||
| hugetlb.h | ||
| hw_breakpoint.h | ||
| hwcap.h | ||
| hypervisor.h | ||
| insn.h | ||
| io.h | ||
| irq_work.h | ||
| irq.h | ||
| irqflags.h | ||
| jump_label.h | ||
| Kbuild | ||
| kgdb.h | ||
| kvm_arm.h | ||
| kvm_asm.h | ||
| kvm_coproc.h | ||
| kvm_emulate.h | ||
| kvm_host.h | ||
| kvm_mmio.h | ||
| kvm_mmu.h | ||
| kvm_psci.h | ||
| linkage.h | ||
| memblock.h | ||
| memory.h | ||
| mmu_context.h | ||
| mmu.h | ||
| module.h | ||
| neon.h | ||
| opcodes.h | ||
| page.h | ||
| pci.h | ||
| percpu.h | ||
| perf_event.h | ||
| pgalloc.h | ||
| pgtable-hwdef.h | ||
| pgtable-types.h | ||
| pgtable.h | ||
| pmu.h | ||
| proc-fns.h | ||
| processor.h | ||
| psci.h | ||
| ptrace.h | ||
| seccomp.h | ||
| shmparam.h | ||
| signal32.h | ||
| smp_plat.h | ||
| smp.h | ||
| sparsemem.h | ||
| spinlock_types.h | ||
| spinlock.h | ||
| stackprotector.h | ||
| stacktrace.h | ||
| stat.h | ||
| string.h | ||
| suspend.h | ||
| sync_bitops.h | ||
| syscall.h | ||
| syscalls.h | ||
| sysreg.h | ||
| system_misc.h | ||
| thread_info.h | ||
| timex.h | ||
| tlb.h | ||
| tlbflush.h | ||
| topology.h | ||
| traps.h | ||
| uaccess.h | ||
| ucontext.h | ||
| unistd.h | ||
| unistd32.h | ||
| vdso_datapage.h | ||
| vdso.h | ||
| virt.h | ||
| word-at-a-time.h | ||