linux/arch/arm
Victor Kamensky 72e6ae285a ARM: 8043/1: uprobes need icache flush after xol write
After instruction write into xol area, on ARM V7
architecture code need to flush dcache and icache to sync
them up for given set of addresses. Having just
'flush_dcache_page(page)' call is not enough - it is
possible to have stale instruction sitting in icache
for given xol area slot address.

Introduce arch_uprobe_ixol_copy weak function
that by default calls uprobes copy_to_page function and
than flush_dcache_page function and on ARM define new one
that handles xol slot copy in ARM specific way

flush_uprobe_xol_access function shares/reuses implementation
with/of flush_ptrace_access function and takes care of writing
instruction to user land address space on given variety of
different cache types on ARM CPUs. Because
flush_uprobe_xol_access does not have vma around
flush_ptrace_access was split into two parts. First that
retrieves set of condition from vma and common that receives
those conditions as flags.

Note ARM cache flush function need kernel address
through which instruction write happened, so instead
of using uprobes copy_to_page function changed
code to explicitly map page and do memcpy.

Note arch_uprobe_copy_ixol function, in similar way as
copy_to_user_page function, has preempt_disable/preempt_enable.

Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: David A. Long <dave.long@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2014-05-25 23:48:45 +01:00
..
boot Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-04-10 08:55:08 -07:00
common ARM: 8029/1: mcpm: Rename the power_down_finish() functions to be less confusing 2014-05-25 23:48:12 +01:00
configs MMC highlights for 3.15: 2014-04-09 08:39:39 -07:00
crypto
firmware ARM: trusted_foundations: implement prepare_idle() 2014-02-18 13:46:46 -07:00
include ARM: 8043/1: uprobes need icache flush after xol write 2014-05-25 23:48:45 +01:00
kernel ARM: 8043/1: uprobes need icache flush after xol write 2014-05-25 23:48:45 +01:00
kvm CPU hotplug notifiers registration fixes for 3.15-rc1 2014-04-07 14:55:46 -07:00
lib ARM: 7990/1: asm: rename logical shift macros push pull into lspush lspull 2014-02-25 11:33:57 +00:00
mach-at91 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-bcm ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-berlin ARM: select HAVE_SMP for V7 multi-platform 2014-02-19 16:43:27 -06:00
mach-clps711x ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-cns3xxx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-davinci ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-dove ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-ebsa110 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-efm32 ARM: efm32: drop unused file <mach/timex.h> 2014-02-24 10:07:27 +01:00
mach-ep93xx ARM: 8036/1: Enable IRQs before attempting to read user space in __und_usr 2014-04-25 12:06:38 +01:00
mach-exynos ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-footbridge ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-gemini ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-highbank ARM: select HAVE_SMP for V7 multi-platform 2014-02-19 16:43:27 -06:00
mach-hisi ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-imx ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-integrator ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-iop13xx
mach-iop32x This cleanup series gets rid of <mach/timex.h> for platforms not using 2014-02-24 10:06:56 +01:00
mach-iop33x
mach-ixp4xx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-keystone ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
mach-kirkwood ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-ks8695 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-lpc32xx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-mmp ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-moxart ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-msm ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-mv78xx0 ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-mvebu ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-mxs ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
mach-netx ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-nomadik ARM: centralize common multi-platform kconfig options 2014-02-19 16:38:18 -06:00
mach-nspire ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-omap1 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-omap2 fbdev changes for 3.15 (OMAP) 2014-04-07 10:47:51 -07:00
mach-orion5x ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-picoxcell Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-prima2 Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-pxa pwm: Changes for v3.15-rc1 2014-04-05 18:32:31 -07:00
mach-qcom ARM: qcom: Add SMP support for KPSSv2 2014-02-11 15:00:40 -06:00
mach-realview ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-rockchip i.MX SoC changes for 3.15: 2014-03-09 12:03:18 -07:00
mach-rpc ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-s3c24xx Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-s3c64xx ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-s5p64x0 ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-s5pc100 ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-s5pv210 ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mach-sa1100 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-shmobile Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
mach-socfpga The clock framework changes for 3.15 look similar to past pull requests. 2014-04-05 18:39:18 -07:00
mach-spear ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-sti Merge branch 'cleanup/kconfig' into next/drivers 2014-03-18 16:25:47 +01:00
mach-sunxi ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-tegra ARM: SoC specific changes 2014-04-05 14:19:54 -07:00
mach-u300 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-ux500 ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
mach-versatile ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
mach-vexpress ARM: 8029/1: mcpm: Rename the power_down_finish() functions to be less confusing 2014-05-25 23:48:12 +01:00
mach-vt8500 ARM: vt8500: enable V6K instead of plain V6 2014-02-19 16:47:16 -06:00
mach-w90x900 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
mach-zynq ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
mm ARM: 8043/1: uprobes need icache flush after xol write 2014-05-25 23:48:45 +01:00
net net: filter: add jited flag to indicate jit compiled filters 2014-03-31 00:45:08 -04:00
nwfpe
oprofile
plat-iop ARM: 8000/1: misc: remove deprecated IRQF_DISABLED 2014-03-12 10:32:38 +00:00
plat-omap ARM: SoC: device tree changes 2014-04-05 15:29:04 -07:00
plat-orion ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
plat-pxa
plat-samsung Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
plat-versatile
tools
vfp ARM: 8036/1: Enable IRQs before attempting to read user space in __und_usr 2014-04-25 12:06:38 +01:00
xen xen/grant-table: Refactor gnttab_[un]map_refs to avoid m2p_override 2014-03-18 14:40:19 +00:00
Kconfig ARM: 8011/1: ARM hibernation / suspend-to-disk 2014-04-23 01:24:14 +01:00
Kconfig-nommu
Kconfig.debug ARM: SoC: late cleanups 2014-04-05 15:46:37 -07:00
Makefile ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00