aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/events
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-06-05 18:57:04 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-05 18:57:04 -0400
commiteb3d3ec567e868c8a3bfbfdfc9465ffd52983d11 (patch)
tree75acf38b8d73cd281e5ce4dcc941faf48e244b98 /kernel/events
parentc3c55a07203947f72afa50a3218460b27307c47d (diff)
parentbd63ce27d9d62bc40a962b991cbbbe4f0dc913d2 (diff)
Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into next
Pull ARM updates from Russell King: - Major clean-up of the L2 cache support code. The existing mess was becoming rather unmaintainable through all the additions that others have done over time. This turns it into a much nicer structure, and implements a few performance improvements as well. - Clean up some of the CP15 control register tweaks for alignment support, moving some code and data into alignment.c - DMA properties for ARM, from Santosh and reviewed by DT people. This adds DT properties to specify bus translations we can't discover automatically, and to indicate whether devices are coherent. - Hibernation support for ARM - Make ftrace work with read-only text in modules - add suspend support for PJ4B CPUs - rework interrupt masking for undefined instruction handling, which allows us to enable interrupts earlier in the handling of these exceptions. - support for big endian page tables - fix stacktrace support to exclude stacktrace functions from the trace, and add save_stack_trace_regs() implementation so that kprobes can record stack traces. - Add support for the Cortex-A17 CPU. - Remove last vestiges of ARM710 support. - Removal of ARM "meminfo" structure, finally converting us solely to memblock to handle the early memory initialisation. * 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: (142 commits) ARM: ensure C page table setup code follows assembly code (part II) ARM: ensure C page table setup code follows assembly code ARM: consolidate last remaining open-coded alignment trap enable ARM: remove global cr_no_alignment ARM: remove CPU_CP15 conditional from alignment.c ARM: remove unused adjust_cr() function ARM: move "noalign" command line option to alignment.c ARM: provide common method to clear bits in CPU control register ARM: 8025/1: Get rid of meminfo ARM: 8060/1: mm: allow sub-architectures to override PCI I/O memory type ARM: 8066/1: correction for ARM patch 8031/2 ARM: 8049/1: ftrace/add save_stack_trace_regs() implementation ARM: 8065/1: remove last use of CONFIG_CPU_ARM710 ARM: 8062/1: Modify ldrt fixup handler to re-execute the userspace instruction ARM: 8047/1: rwsem: use asm-generic rwsem implementation ARM: l2c: trial at enabling some Cortex-A9 optimisations ARM: l2c: add warnings for stuff modifying aux_ctrl register values ARM: l2c: print a warning with L2C-310 caches if the cache size is modified ARM: l2c: remove old .set_debug method ARM: l2c: kill L2X0_AUX_CTRL_MASK before anyone else makes use of this ...
Diffstat (limited to 'kernel/events')
-rw-r--r--kernel/events/uprobes.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index d1edc5e6fd03..adcd76a96839 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -1291,14 +1291,8 @@ static unsigned long xol_get_insn_slot(struct uprobe *uprobe)
1291 if (unlikely(!xol_vaddr)) 1291 if (unlikely(!xol_vaddr))
1292 return 0; 1292 return 0;
1293 1293
1294 /* Initialize the slot */ 1294 arch_uprobe_copy_ixol(area->page, xol_vaddr,
1295 copy_to_page(area->page, xol_vaddr, 1295 &uprobe->arch.ixol, sizeof(uprobe->arch.ixol));
1296 &uprobe->arch.ixol, sizeof(uprobe->arch.ixol));
1297 /*
1298 * We probably need flush_icache_user_range() but it needs vma.
1299 * This should work on supported architectures too.
1300 */
1301 flush_dcache_page(area->page);
1302 1296
1303 return xol_vaddr; 1297 return xol_vaddr;
1304} 1298}
@@ -1341,6 +1335,21 @@ static void xol_free_insn_slot(struct task_struct *tsk)
1341 } 1335 }
1342} 1336}
1343 1337
1338void __weak arch_uprobe_copy_ixol(struct page *page, unsigned long vaddr,
1339 void *src, unsigned long len)
1340{
1341 /* Initialize the slot */
1342 copy_to_page(page, vaddr, src, len);
1343
1344 /*
1345 * We probably need flush_icache_user_range() but it needs vma.
1346 * This should work on most of architectures by default. If
1347 * architecture needs to do something different it can define
1348 * its own version of the function.
1349 */
1350 flush_dcache_page(page);
1351}
1352
1344/** 1353/**
1345 * uprobe_get_swbp_addr - compute address of swbp given post-swbp regs 1354 * uprobe_get_swbp_addr - compute address of swbp given post-swbp regs
1346 * @regs: Reflects the saved state of the task after it has hit a breakpoint 1355 * @regs: Reflects the saved state of the task after it has hit a breakpoint