login
Login
/
Register
Search
Search this site:
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2008
»
August
»
20
Re: [PATCH] ftrace: x86 use copy to and from user functions
view
thread
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From: Steven Rostedt
Subject:
Re: [PATCH] ftrace: x86 use copy to and from user functions
Date: Wednesday, August 20, 2008 - 2:43 pm
On Thu, 21 Aug 2008, Benjamin Herrenschmidt wrote:
quoted text
> On Wed, 2008-08-20 at 12:55 -0400, Steven Rostedt wrote: > > The modification of code is performed either by kstop_machine, before > > SMP starts, or on module code before the module is executed. There is > > no reason to do the modifications from assembly. The copy to and from > > user functions are sufficient and produces cleaner and easier to read > > code. > > > > Thanks to Benjamin Herrenschmidt for suggesting the idea. > > Haven't we lost the dcache/icache synchronisation somewhere ?
This is the x86 version, sync_core should be fine. -- Steve
quoted text
> > > Signed-off-by: Steven Rostedt <srostedt@redhat.com> > > --- > > arch/x86/kernel/ftrace.c | 38 +++++++++++++------------------------- > > 1 file changed, 13 insertions(+), 25 deletions(-) > > > > Index: linux-tip.git/arch/x86/kernel/ftrace.c > > =================================================================== > > --- linux-tip.git.orig/arch/x86/kernel/ftrace.c 2008-08-20 12:39:41.000000000 -0400 > > +++ linux-tip.git/arch/x86/kernel/ftrace.c 2008-08-20 12:40:17.000000000 -0400 > > @@ -11,6 +11,7 @@ > > > > #include <linux/spinlock.h> > > #include <linux/hardirq.h> > > +#include <linux/uaccess.h> > > #include <linux/ftrace.h> > > #include <linux/percpu.h> > > #include <linux/init.h> > > @@ -60,11 +61,7 @@ notrace int > > ftrace_modify_code(unsigned long ip, unsigned char *old_code, > > unsigned char *new_code) > > { > > - unsigned replaced; > > - unsigned old = *(unsigned *)old_code; /* 4 bytes */ > > - unsigned new = *(unsigned *)new_code; /* 4 bytes */ > > - unsigned char newch = new_code[4]; > > - int faulted = 0; > > + unsigned char replaced[MCOUNT_INSN_SIZE]; > > > > /* > > * Note: Due to modules and __init, code can > > @@ -72,29 +69,20 @@ ftrace_modify_code(unsigned long ip, uns > > * as well as code changing. > > * > > * No real locking needed, this code is run through > > - * kstop_machine. > > + * kstop_machine, or before SMP starts. > > */ > > - asm volatile ( > > - "1: lock\n" > > - " cmpxchg %3, (%2)\n" > > - " jnz 2f\n" > > - " movb %b4, 4(%2)\n" > > - "2:\n" > > - ".section .fixup, \"ax\"\n" > > - "3: movl , %0\n" > > - " jmp 2b\n" > > - ".previous\n" > > - _ASM_EXTABLE(1b, 3b) > > - : "=r"(faulted), "=a"(replaced) > > - : "r"(ip), "r"(new), "c"(newch), > > - "0"(faulted), "a"(old) > > - : "memory"); > > - sync_core(); > > + if (__copy_from_user(replaced, (char __user *)ip, MCOUNT_INSN_SIZE)) > > + return 1; > > > > - if (replaced != old && replaced != new) > > - faulted = 2; > > + if (memcmp(replaced, old_code, MCOUNT_INSN_SIZE) != 0) > > + return 2; > > > > - return faulted; > > + WARN_ON_ONCE(__copy_to_user((char __user *)ip, new_code, > > + MCOUNT_INSN_SIZE)); > > + > > + sync_core(); > > + > > + return 0; > > } > > > > notrace int ftrace_update_ftrace_func(ftrace_func_t func) > >
--
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
[PATCH] ftrace: x86 use copy to and from user functions
, Steven Rostedt
, (Wed Aug 20, 9:55 am)
Re: [PATCH] ftrace: x86 use copy to and from user functions
, Benjamin Herrenschmidt
, (Wed Aug 20, 2:39 pm)
Re: [PATCH] ftrace: x86 use copy to and from user functions
, Steven Rostedt
, (Wed Aug 20, 2:43 pm)
Re: [PATCH] ftrace: x86 use copy to and from user functions
, Benjamin Herrenschmidt
, (Wed Aug 20, 3:08 pm)
Re: [PATCH] ftrace: x86 use copy to and from user functions
, Ingo Molnar
, (Thu Aug 21, 3:31 am)
Navigation
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Ingo Molnar
Re: [PATCH 0/3] v2 Make hierarchical RCU less IPI-happy and add more tracing
Jeremy Fitzhardinge
Re: Linux 2.6.28.10 and Linux 2.6.29.6 XEN Guest Support Broken x86_64 in BUILD
Nick Piggin
Re: [patch] CFS (Completely Fair Scheduler), v2
Gary Hade
Re: [PATCH 0/5][RFC] Physical PCI slot objects
Dave Johnson
Re: expected behavior of PF_PACKET on NETIF_F_HW_VLAN_RX device?
linux-netdev
:
Arnd Bergmann
Re: 64-bit net_device_stats
Stephens, Allan
RE: [PATCH]: tipc: Fix oops on send prior to entering networked mode
frank.blaschka
[patch 3/5] [PATCH] qeth: support z/VM VSWITCH Port Isolation
Wu Fengguang
Re: [PATCH] dm9601: handle corrupt mac address
David Miller
Re: [PATCH net-2.6.24] Fix refcounting problem with netif_rx_reschedule()
git
:
Junio C Hamano
Re: [PATCH] [RFC] add Message-ID field to log on git-am operation
Junio C Hamano
Re: Handling large files with GIT
Karl
Re: [ANNOUNCE] pg - A patch porcelain for GIT
Josh Triplett
Re: [RFC][PATCH 00/10] Sparse: Git's "make check" target
Pierre Habouzit
Re: [PATCH] git-daemon: more powerful base-path/user-path settings, using formats.
git-commits-head
:
Linux Kernel Mailing List
MIPS: RBTX4939: Fix IOC pin-enable register updating
Linux Kernel Mailing List
regulator: update email address for Liam Girdwood
Linux Kernel Mailing List
[SCSI] ipr: add message to error table
Linux Kernel Mailing List
powerpc/32: Wire up the trampoline code for kdump
Linux Kernel Mailing List
USB: omap_udc: sync with OMAP tree
openbsd-misc
:
Josh Grosse
Re: error : pkg add phpMyAdmin
Brian Candler
Re: OBSD's perspective on SELinux
Jacob Meuser
Re: /dev/audio: Device busy
David Vasek
Re: Inexpensive, low power, "wall wart" computer
William Boshuck
Re: Richard Stallman...
Colocation donated by:
Syndicate