Alex Smith
91ad11d7cc
recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in modules
...
On MIPS calls to _mcount in modules generate 2 instructions to load
the _mcount address (and therefore 2 relocations). The mcount_loc
table should only reference the first of these, so the second is
filtered out by checking the relocation offset and ignoring ones that
immediately follow the previous one seen.
However if a module has an _mcount call at offset 0, the second
relocation would not be filtered out due to old_r_offset == 0
being taken to mean that the current relocation is the first one
seen, and both would end up in the mcount_loc table.
This results in ftrace_make_nop() patching both (adjacent)
instructions to branches over the _mcount call sequence like so:
0xffffffffc08a8000: 04 00 00 10 b 0xffffffffc08a8014
0xffffffffc08a8004: 04 00 00 10 b 0xffffffffc08a8018
0xffffffffc08a8008: 2d 08 e0 03 move at,ra
...
The second branch is in the delay slot of the first, which is
defined to be unpredictable - on the platform on which this bug was
encountered, it triggers a reserved instruction exception.
Fix by initializing old_r_offset to ~0 and using that instead of 0
to determine whether the current relocation is the first seen.
Signed-off-by: Alex Smith <alex.smith@imgtec.com>
Cc: linux-kernel@vger.kernel.org
Cc: stable@vger.kernel.org
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/7098/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2014-06-26 10:48:19 +01:00
..
basic
kbuild: trivial - use tabs for code indent where possible
2014-06-10 14:00:53 +02:00
coccinelle
coccicheck: Add unneeded return variable test
2014-06-10 14:36:30 +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 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-06-12 21:29:20 -07:00
ksymoops
mod
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-06-12 21:29:20 -07:00
package
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-06-12 21:29:20 -07:00
rt-tester
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
selinux
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
tracing
.gitignore
analyze_suspend.py
PM / tools: new tool for suspend/resume performance optimization
2014-01-17 01:47:26 +01:00
asn1_compiler.c
X.509: remove possible code fragility: enumeration values not handled
2013-09-25 17:17:01 +01:00
bin2c.c
bloat-o-meter
scripts/bloat-o-meter: use .startswith rather than fragile slicing
2013-11-07 10:47:13 +01:00
bootgraph.pl
scripts/bootgraph.pl: Add graphic header
2014-04-08 17:15:15 +02:00
checkincludes.pl
checkkconfigsymbols.sh
scripts/checkkconfigsymbols.sh: replace echo -e with printf
2013-08-28 17:00:47 +02:00
checkpatch.pl
scripts/checkpatch.pl: device_initcall is not the only __initcall substitute
2014-06-04 16:54:20 -07:00
checkstack.pl
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
checksyscalls.sh
scripts/checksyscalls.sh: Make renameat optional
2014-05-20 10:59:38 +02:00
checkversion.pl
cleanfile
cleanpatch
coccicheck
Coccinelle: Update information about the minimal version required
2013-07-03 22:58:20 +02:00
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
extract-ikconfig
extract-vmlinux
gcc-goto.sh
arm64, jump label: detect %c support for ARM64
2014-01-08 15:21:29 +00:00
gcc-ld
Kbuild, lto: Add a gcc-ld script to let run gcc as ld
2014-02-13 20:25:02 -08:00
gcc-version.sh
gcc-x86_32-has-stack-protector.sh
gcc-x86_64-has-stack-protector.sh
gen_initramfs_list.sh
scripts/gen_initramfs_list.sh: fix flags for initramfs LZ4 compression
2014-03-04 07:55:48 -08:00
get_maintainer.pl
get_maintainer: fix detection of git repository
2014-02-10 16:01:40 -08:00
gfp-translate
headerdep.pl
headers.sh
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
headers_check.pl
headers_check: special case seqbuf_dump()
2014-01-23 16:36:55 -08:00
headers_install.sh
kbuild: fix make headers_install when path is too long
2013-05-17 22:10:35 +02:00
kallsyms.c
kbuild: trivial - use tabs for code indent where possible
2014-06-10 14:00:53 +02:00
Kbuild.include
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-04-07 17:52:31 -07:00
kernel-doc
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2013-11-15 14:09:15 -08: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
kallsyms: fix percpu vars on x86-64 with relocation.
2014-03-17 14:55:27 +10:30
Makefile
kbuild: do not add "selinux" to subdir- twice
2014-06-09 23:24:59 +02:00
Makefile.asm-generic
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
Makefile.build
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
Makefile.clean
Makefile.extrawarn
kbuild: move extra gcc checks to scripts/Makefile.extrawarn
2014-04-16 23:28:41 +02:00
Makefile.fwinst
firmware: Simplify directory creation
2014-05-14 22:43:04 +02:00
Makefile.headersinst
kbuild: fix make headers_install when path is too long
2013-05-17 22:10:35 +02:00
Makefile.help
Makefile.host
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-06-12 21:29:20 -07:00
Makefile.lib
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
Makefile.modbuiltin
Makefile.modinst
Makefile.modpost
modpost: Optionally ignore secondary errors seen if a single module build fails
2013-09-23 15:45:03 +09:30
Makefile.modsign
makelst
markup_oops.pl
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
mkcompile_h
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
mkmakefile
kbuild: support simultaneous "make %config" and "make all"
2014-04-30 16:45:16 +02:00
mksysmap
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +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
recordmcount.c
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-06-12 21:29:20 -07:00
recordmcount.h
recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in modules
2014-06-26 10:48:19 +01:00
recordmcount.pl
ftrace: Add arm64 support to recordmcount
2014-05-29 09:04:31 +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
sortextable.c
xtensa: enable sorting extable at build time
2014-04-02 01:35:50 +04:00
sortextable.h
scripts/sortextable: support objects with more than 64K sections.
2013-11-13 12:09:00 +09:00
tags.sh
kbuild: trivial - use tabs for code indent where possible
2014-06-10 14:00:53 +02:00
unifdef.c
ver_linux
xz_wrap.sh