]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit - block/blk-wbt.c
locking/atomics: COCCINELLE/treewide: Convert trivial ACCESS_ONCE() patterns to READ_...
authorMark Rutland <mark.rutland@arm.com>
Mon, 23 Oct 2017 21:07:29 +0000 (14:07 -0700)
committerIngo Molnar <mingo@kernel.org>
Wed, 25 Oct 2017 09:01:08 +0000 (11:01 +0200)
commit6aa7de059173a986114ac43b8f50b297a86f09a8
tree77666afe795e022914ca26433d61686c694dc4fd
parentb03a0fe0c5e4b46dcd400d27395b124499554a71
locking/atomics: COCCINELLE/treewide: Convert trivial ACCESS_ONCE() patterns to READ_ONCE()/WRITE_ONCE()

Please do not apply this to mainline directly, instead please re-run the
coccinelle script shown below and apply its output.

For several reasons, it is desirable to use {READ,WRITE}_ONCE() in
preference to ACCESS_ONCE(), and new code is expected to use one of the
former. So far, there's been no reason to change most existing uses of
ACCESS_ONCE(), as these aren't harmful, and changing them results in
churn.

However, for some features, the read/write distinction is critical to
correct operation. To distinguish these cases, separate read/write
accessors must be used. This patch migrates (most) remaining
ACCESS_ONCE() instances to {READ,WRITE}_ONCE(), using the following
coccinelle script:

----
// Convert trivial ACCESS_ONCE() uses to equivalent READ_ONCE() and
// WRITE_ONCE()

// $ make coccicheck COCCI=/home/mark/once.cocci SPFLAGS="--include-headers" MODE=patch

virtual patch

@ depends on patch @
expression E1, E2;
@@

- ACCESS_ONCE(E1) = E2
+ WRITE_ONCE(E1, E2)

@ depends on patch @
expression E;
@@

- ACCESS_ONCE(E)
+ READ_ONCE(E)
----

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: davem@davemloft.net
Cc: linux-arch@vger.kernel.org
Cc: mpe@ellerman.id.au
Cc: shuah@kernel.org
Cc: snitzer@redhat.com
Cc: thor.thayer@linux.intel.com
Cc: tj@kernel.org
Cc: viro@zeniv.linux.org.uk
Cc: will.deacon@arm.com
Link: http://lkml.kernel.org/r/1508792849-3115-19-git-send-email-paulmck@linux.vnet.ibm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
180 files changed:
arch/arc/kernel/smp.c
arch/arm/include/asm/spinlock.h
arch/arm/mach-tegra/cpuidle-tegra20.c
arch/arm/vdso/vgettimeofday.c
arch/ia64/include/asm/spinlock.h
arch/mips/include/asm/vdso.h
arch/mips/kernel/pm-cps.c
arch/mn10300/kernel/mn10300-serial.c
arch/parisc/include/asm/atomic.h
arch/powerpc/platforms/powernv/opal-msglog.c
arch/s390/include/asm/spinlock.h
arch/s390/lib/spinlock.c
arch/sparc/include/asm/atomic_32.h
arch/tile/gxio/dma_queue.c
arch/tile/include/gxio/dma_queue.h
arch/tile/kernel/ptrace.c
arch/x86/entry/common.c
arch/x86/entry/vdso/vclock_gettime.c
arch/x86/events/core.c
arch/x86/include/asm/vgtod.h
arch/x86/kernel/espfix_64.c
arch/x86/kernel/nmi.c
arch/x86/kvm/mmu.c
arch/x86/kvm/page_track.c
arch/x86/xen/p2m.c
arch/xtensa/platforms/xtfpga/lcd.c
block/blk-wbt.c
drivers/base/core.c
drivers/base/power/runtime.c
drivers/char/random.c
drivers/clocksource/bcm2835_timer.c
drivers/crypto/caam/jr.c
drivers/crypto/nx/nx-842-powernv.c
drivers/firewire/ohci.c
drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
drivers/gpu/drm/radeon/radeon_gem.c
drivers/gpu/drm/vmwgfx/vmwgfx_surface.c
drivers/infiniband/hw/hfi1/file_ops.c
drivers/infiniband/hw/hfi1/pio.c
drivers/infiniband/hw/hfi1/ruc.c
drivers/infiniband/hw/hfi1/sdma.c
drivers/infiniband/hw/hfi1/sdma.h
drivers/infiniband/hw/hfi1/uc.c
drivers/infiniband/hw/hfi1/ud.c
drivers/infiniband/hw/hfi1/user_sdma.c
drivers/infiniband/hw/qib/qib_ruc.c
drivers/infiniband/hw/qib/qib_uc.c
drivers/infiniband/hw/qib/qib_ud.c
drivers/infiniband/sw/rdmavt/qp.c
drivers/input/misc/regulator-haptic.c
drivers/md/dm-bufio.c
drivers/md/dm-kcopyd.c
drivers/md/dm-stats.c
drivers/md/dm-switch.c
drivers/md/dm-thin.c
drivers/md/dm-verity-target.c
drivers/md/dm.c
drivers/md/md.c
drivers/md/raid5.c
drivers/misc/mic/scif/scif_rb.c
drivers/misc/mic/scif/scif_rma_list.c
drivers/net/bonding/bond_alb.c
drivers/net/bonding/bond_main.c
drivers/net/ethernet/chelsio/cxgb4/sge.c
drivers/net/ethernet/emulex/benet/be_main.c
drivers/net/ethernet/hisilicon/hip04_eth.c
drivers/net/ethernet/intel/i40e/i40e_debugfs.c
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/i40e/i40e_ptp.c
drivers/net/ethernet/intel/igb/e1000_regs.h
drivers/net/ethernet/intel/igb/igb_main.c
drivers/net/ethernet/intel/ixgbe/ixgbe_common.h
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
drivers/net/ethernet/intel/ixgbevf/vf.h
drivers/net/ethernet/mellanox/mlx4/en_tx.c
drivers/net/ethernet/neterion/vxge/vxge-main.c
drivers/net/ethernet/sfc/ef10.c
drivers/net/ethernet/sfc/efx.c
drivers/net/ethernet/sfc/falcon/efx.c
drivers/net/ethernet/sfc/falcon/falcon.c
drivers/net/ethernet/sfc/falcon/farch.c
drivers/net/ethernet/sfc/falcon/nic.h
drivers/net/ethernet/sfc/falcon/tx.c
drivers/net/ethernet/sfc/farch.c
drivers/net/ethernet/sfc/nic.h
drivers/net/ethernet/sfc/ptp.c
drivers/net/ethernet/sfc/tx.c
drivers/net/ethernet/sun/niu.c
drivers/net/tap.c
drivers/net/tun.c
drivers/net/wireless/ath/ath5k/desc.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
drivers/net/wireless/intel/iwlwifi/mvm/ops.c
drivers/net/wireless/intel/iwlwifi/mvm/tx.c
drivers/net/wireless/intel/iwlwifi/pcie/rx.c
drivers/net/wireless/intel/iwlwifi/pcie/trans.c
drivers/net/wireless/mac80211_hwsim.c
drivers/scsi/qla2xxx/qla_target.c
drivers/target/target_core_user.c
drivers/usb/class/cdc-wdm.c
drivers/usb/core/devio.c
drivers/usb/core/sysfs.c
drivers/usb/gadget/udc/gr_udc.c
drivers/usb/host/ohci-hcd.c
drivers/usb/host/uhci-hcd.h
drivers/vfio/vfio.c
drivers/vhost/scsi.c
fs/aio.c
fs/buffer.c
fs/crypto/keyinfo.c
fs/direct-io.c
fs/exec.c
fs/fcntl.c
fs/fs_pin.c
fs/fuse/dev.c
fs/inode.c
fs/namei.c
fs/namespace.c
fs/nfs/dir.c
fs/proc/array.c
fs/proc_namespace.c
fs/splice.c
fs/userfaultfd.c
fs/xfs/xfs_log_priv.h
include/linux/bitops.h
include/linux/dynamic_queue_limits.h
include/linux/huge_mm.h
include/linux/if_team.h
include/linux/llist.h
include/linux/pm_runtime.h
include/net/ip_vs.h
kernel/acct.c
kernel/events/core.c
kernel/events/ring_buffer.c
kernel/exit.c
kernel/trace/ring_buffer.c
kernel/trace/trace.h
kernel/trace/trace_stack.c
kernel/user_namespace.c
lib/assoc_array.c
lib/dynamic_queue_limits.c
lib/llist.c
lib/vsprintf.c
mm/huge_memory.c
net/core/dev.c
net/core/pktgen.c
net/ipv4/inet_fragment.c
net/ipv4/route.c
net/ipv4/tcp_output.c
net/ipv4/udp.c
net/ipv6/ip6_tunnel.c
net/ipv6/udp.c
net/llc/llc_input.c
net/mac80211/sta_info.c
net/netlabel/netlabel_calipso.c
net/wireless/nl80211.c
sound/firewire/amdtp-am824.c
sound/firewire/amdtp-stream.c
sound/firewire/amdtp-stream.h
sound/firewire/digi00x/amdtp-dot.c
sound/firewire/fireface/amdtp-ff.c
sound/firewire/fireface/ff-midi.c
sound/firewire/fireface/ff-transaction.c
sound/firewire/isight.c
sound/firewire/motu/amdtp-motu.c
sound/firewire/oxfw/oxfw-scs1x.c
sound/firewire/tascam/amdtp-tascam.c
sound/firewire/tascam/tascam-transaction.c
sound/soc/xtensa/xtfpga-i2s.c
sound/usb/bcd2000/bcd2000.c
tools/arch/x86/include/asm/atomic.h
tools/include/asm-generic/atomic-gcc.h
tools/perf/util/auxtrace.h
tools/perf/util/session.h
virt/kvm/kvm_main.c