Heiko Carstens
c933146a5e
s390/ftrace,kprobes: allow to patch first instruction
...
If the function tracer is enabled, allow to set kprobes on the first
instruction of a function (which is the function trace caller):
If no kprobe is set handling of enabling and disabling function tracing
of a function simply patches the first instruction. Either it is a nop
(right now it's an unconditional branch, which skips the mcount block),
or it's a branch to the ftrace_caller() function.
If a kprobe is being placed on a function tracer calling instruction
we encode if we actually have a nop or branch in the remaining bytes
after the breakpoint instruction (illegal opcode).
This is possible, since the size of the instruction used for the nop
and branch is six bytes, while the size of the breakpoint is only
two bytes.
Therefore the first two bytes contain the illegal opcode and the last
four bytes contain either "0" for nop or "1" for branch. The kprobes
code will then execute/simulate the correct instruction.
Instruction patching for kprobes and function tracer is always done
with stop_machine(). Therefore we don't have any races where an
instruction is patched concurrently on a different cpu.
Besides that also the program check handler which executes the function
trace caller instruction won't be executed concurrently to any
stop_machine() execution.
This allows to keep full fault based kprobes handling which generates
correct pt_regs contents automatically.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2014-10-27 13:27:27 +01:00
..
basic
kernel: build bin2c based on config option CONFIG_BUILD_BIN2C
2014-08-08 15:57:32 -07:00
coccinelle
coccinelle: misc: semantic patch to delete overly complex return code processing
2014-09-26 13:42:31 +02:00
dtc
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
genksyms
genksyms: fix typeof() handling
2014-04-03 16:20:52 -07:00
kconfig
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-10-14 09:22:26 +02:00
ksymoops
mod
arm64 updates for 3.18:
2014-10-08 05:34:24 -04:00
package
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-10-14 09:27:48 +02:00
rt-tester
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
selinux
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
tracing
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
.gitignore
bin2c: move bin2c in scripts/basic
2014-08-08 15:57:32 -07:00
analyze_suspend.py
PM / tools: analyze_suspend.py: update to v3.0
2014-08-09 02:47:58 +02:00
asn1_compiler.c
X.509: remove possible code fragility: enumeration values not handled
2013-09-25 17:17:01 +01:00
bloat-o-meter
bloat-o-meter: Ignore syscall aliases SyS_ and compat_SyS_
2014-08-23 13:08:48 -07:00
bootgraph.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
checkincludes.pl
checkkconfigsymbols.sh
scripts/checkkconfigsymbols.sh: replace echo -e with printf
2013-08-28 17:00:47 +02:00
checkpatch.pl
checkpatch: warn on logging functions with KERN_<LEVEL>
2014-10-14 02:18:15 +02:00
checkstack.pl
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2014-10-07 21:16:26 -04:00
checksyscalls.sh
scripts/checksyscalls.sh: Make renameat optional
2014-05-20 10:59:38 +02:00
checkversion.pl
cleanfile
cleanpatch
coccicheck
config
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
conmakehash.c
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
decode_stacktrace.sh
decode_stacktrace: make stack dump output useful again
2014-06-10 15:29:43 -07:00
decodecode
depmod.sh
diffconfig
diffconfig: Update script to support python versions 2.5 through 3.3
2013-09-01 21:24:51 +02:00
docproc.c
kbuild: trivial - use tabs for code indent where possible
2014-06-10 14:00:53 +02:00
export_report.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
extract-ikconfig
extract-vmlinux
gcc-goto.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-ld
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-version.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-x86_32-has-stack-protector.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-x86_64-has-stack-protector.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gen_initramfs_list.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
get_maintainer.pl
scripts: Teach get_maintainer.pl about the new "R:" tag
2014-07-08 14:47:17 -07:00
gfp-translate
headerdep.pl
headers.sh
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
headers_check.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
headers_install.sh
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-10-14 09:22:26 +02:00
kallsyms.c
aarch64: filter $x from kallsyms
2014-10-02 17:01:51 +01:00
Kbuild.include
kbuild: simplify build, clean, modbuiltin shorthands
2014-10-02 15:12:41 +02:00
kernel-doc
scripts/kernel-doc: recognize __meminit
2014-08-26 13:49:57 -07:00
ld-version.sh
Kbuild, lto: add ld-version and ld-ifversion macros
2014-02-13 20:25:00 -08:00
Lindent
link-vmlinux.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
Makefile
bin2c: move bin2c in scripts/basic
2014-08-08 15:57:32 -07:00
Makefile.asm-generic
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
Makefile.build
kbuild: remove obj-n and lib-n handling
2014-10-02 13:55:02 +02:00
Makefile.clean
kbuild: simplify build, clean, modbuiltin shorthands
2014-10-02 15:12:41 +02:00
Makefile.extrawarn
kbuild, LLVMLinux: Supress warnings unless W=1-3
2014-08-05 15:40:01 +02:00
Makefile.fwinst
kbuild: remove obj-n and lib-n handling
2014-10-02 13:55:02 +02:00
Makefile.headersinst
Makefile.help
Makefile.host
kbuild: handle the dependency of multi-objs hostprogs appropriately
2014-08-19 10:26:20 +02:00
Makefile.lib
kbuild: handle multi-objs dependency appropriately
2014-08-19 10:26:19 +02:00
Makefile.modbuiltin
Makefile.modinst
kbuild: handle module compression while running 'make modules_install'.
2014-08-27 21:54:12 +09:30
Makefile.modpost
modpost: Optionally ignore secondary errors seen if a single module build fails
2013-09-23 15:45:03 +09:30
Makefile.modsign
modsign: lookup lines ending in .ko in .mod files
2014-08-27 21:54:11 +09:30
makelst
markup_oops.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
mkcompile_h
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
mkmakefile
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
mksysmap
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
mkuboot.sh
mkversion
module-common.lds
namespace.pl
objdiff
scripts: objdiff: support directories for the augument of record command
2014-06-10 14:59:33 +02:00
patch-kernel
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
pnmtologo.c
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
profile2linkerlist.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
recordmcount.c
s390/ftrace,kprobes: allow to patch first instruction
2014-10-27 13:27:27 +01:00
recordmcount.h
recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in modules
2014-06-26 10:48:19 +01:00
recordmcount.pl
s390/ftrace,kprobes: allow to patch first instruction
2014-10-27 13:27:27 +01:00
setlocalversion
Fix detectition of kernel git repository in setlocalversion script [take #2 ]
2014-01-03 14:48:42 +01:00
show_delta
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
sign-file
treewide: fix errors in printk
2014-09-01 11:18:25 +02:00
sortextable.c
xtensa: enable sorting extable at build time
2014-04-02 01:35:50 +04:00
sortextable.h
scripts/sortextable: suppress warning: `relocs_size' may be used uninitialized
2014-10-14 02:18:23 +02:00
spelling.txt
checkpatch: look for common misspellings
2014-10-14 02:18:15 +02:00
tags.sh
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-10-14 09:27:48 +02:00
unifdef.c
ver_linux
xz_wrap.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00