linux-stable/scripts
Alex Smith 6651239ed8 recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in modules
commit 91ad11d7cc upstream.

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: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/7098/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-06 18:59:09 -07:00
..
basic kbuild: fixdep: support concatenated dep files 2013-04-05 12:22:58 -06:00
coccinelle scripts/coccinelle: Use PTR_ERR_OR_ZERO 2014-04-08 17:27:01 +02:00
dtc scripts/dtc: Add a script to update to mainline dtc source 2014-01-21 13:48:34 +00:00
genksyms genksyms: fix typeof() handling 2014-04-03 16:20:52 -07:00
kconfig kconfig: make allnoconfig disable options behind EMBEDDED and EXPERT 2014-04-07 16:36:09 -07:00
ksymoops
mod Nothing major: the stricter permissions checking for sysfs broke 2014-04-06 09:38:07 -07:00
package builddeb: use $OBJCOPY variable instead of objcopy 2014-06-30 20:14:04 -07:00
rt-tester Fix common misspellings 2011-03-31 11:26:23 -03:00
selinux Create Documentation/security/, 2011-05-19 15:59:38 -07:00
tracing tracing, perf: Convert the power tracer into an event tracer 2009-09-19 11:42:12 +02:00
.gitignore X.509: Add simple ASN.1 grammar compiler 2012-10-08 13:50:19 +10:30
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 checkincludes: fix perlcritic warnings 2010-03-07 21:19:57 +01:00
checkkconfigsymbols.sh scripts/checkkconfigsymbols.sh: replace echo -e with printf 2013-08-28 17:00:47 +02:00
checkpatch.pl checkpatch: don't warn on bitfield spaces around : 2014-04-03 16:21:16 -07:00
checkstack.pl scripts/checkstack.pl: Add metag support 2013-03-02 20:09:55 +00:00
checksyscalls.sh scripts/checksyscalls.sh: Make renameat optional 2014-05-20 10:59:38 +02:00
checkversion.pl kbuild: don't warn about include/linux/version.h not including itself 2011-04-29 15:38:55 +02:00
cleanfile scripts: Make cleanfile/cleanpatch warn about long lines 2007-07-16 21:15:50 +02:00
cleanpatch scripts: Make cleanfile/cleanpatch warn about long lines 2007-07-16 21:15:50 +02:00
coccicheck Coccinelle: Update information about the minimal version required 2013-07-03 22:58:20 +02:00
config scripts/config: fix variable substitution command 2013-09-13 13:06:59 +02:00
conmakehash.c Fix all -Wmissing-prototypes warnings in x86 defconfig 2009-09-23 07:39:28 -07:00
decodecode scripts/decodecode: make faulting insn ptr more robust 2013-04-29 15:54:27 -07:00
depmod.sh depmod: pass -P $CONFIG_SYMBOL_PREFIX 2013-02-22 11:52:31 +01:00
diffconfig diffconfig: Update script to support python versions 2.5 through 3.3 2013-09-01 21:24:51 +02:00
docproc.c kernel-doc: improve "no structured comments found" error 2013-11-13 12:09:32 +09:00
export_report.pl export_report: use warn() to issue WARNING, so they go to stderr 2011-05-24 16:07:07 +02:00
extract-ikconfig scripts/extract-ikconfig: add xz compression support 2011-02-10 15:23:03 +01:00
extract-vmlinux scripts: add extract-vmlinux 2011-08-31 16:12:17 +02:00
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 kbuild: Fix gcc -x syntax 2012-10-03 09:03:24 +02:00
gcc-x86_32-has-stack-protector.sh kbuild: Fix gcc -x syntax 2012-10-03 09:03:24 +02:00
gcc-x86_64-has-stack-protector.sh kbuild: Fix gcc -x syntax 2012-10-03 09:03:24 +02:00
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 chmod +x scripts/gfp-translate 2012-06-27 12:44:29 -07:00
headerdep.pl headerdep: perlcritic warning 2010-03-23 12:26:38 +01: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
headers.sh kbuild, headers.sh: Don't make archheaders explicitly 2011-11-22 14:47:50 -08:00
kallsyms.c kallsyms: fix percpu vars on x86-64 with relocation. 2014-03-17 14:55:27 +10:30
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 scripts/Lindent: support gnu indent v2.2.10 2008-04-29 08:06:04 -07:00
link-vmlinux.sh kallsyms: fix percpu vars on x86-64 with relocation. 2014-03-17 14:55:27 +10:30
Makefile kbuild: specify build_docproc as a phony target 2014-03-14 17:44:17 +01:00
Makefile.asm-generic uapi: Allow automatic generation of uapi/asm/ header files 2012-10-17 12:25:44 +01:00
Makefile.build kbuild: LLVMLinux: Adapt warnings for compilation with clang 2014-04-09 13:44:34 -07:00
Makefile.clean kbuild: Really don't clean bounds.h and asm-offsets.h 2010-03-11 11:15:22 +01:00
Makefile.fwinst kbuild: Fix accidental revert in commit fe04ddf 2012-10-15 13:01:05 -07:00
Makefile.headersinst kbuild: fix make headers_install when path is too long 2013-05-17 22:10:35 +02:00
Makefile.help Add a target to use the Coccinelle checker 2010-06-12 00:00:29 +02:00
Makefile.host kbuild: fix some minor typoes 2008-04-25 20:18:48 +02:00
Makefile.lib Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2014-04-07 17:52:31 -07:00
Makefile.modbuiltin kbuild: Create output directory in Makefile.modbuiltin 2010-06-10 12:23:08 +02:00
Makefile.modinst modules: don't break modules_install on external modules with no key. 2012-11-06 11:52:24 +10: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: Add modules_sign make target 2012-12-14 13:05:28 +10:30
makelst kbuild: introduce ccflags-y, asflags-y and ldflags-y 2007-10-15 22:25:06 +02:00
markup_oops.pl Merge branch 'for-35' of git://repo.or.cz/linux-kbuild 2010-06-01 08:55:52 -07:00
mkcompile_h kbuild: LLVMLinux: Fix LINUX_COMPILER definition script for compilation with clang 2014-04-09 13:44:35 -07:00
mkmakefile kbuild: silence generated makefile message 2011-07-20 17:08:08 +02:00
mksysmap trivial: typo in comment in mksysmap 2012-07-20 10:36:05 +02:00
mkuboot.sh mkuboot.sh: Fail if mkimage is missing 2011-01-07 14:31:01 +01:00
mkversion
module-common.lds module: Sort exported symbols 2011-05-19 16:55:27 +09:30
namespace.pl Revert "namespace: add source file location exceptions" 2010-10-28 00:59:56 +02:00
objdiff scripts: objdiff: detect object code changes between two commits 2014-04-08 16:41:44 +02:00
patch-kernel scripts/patch-kernel: digest kernel.org hosted .xz patches 2012-03-30 15:23:36 +02:00
pnmtologo.c scripts/pnmtologo: fix for plain PBM 2012-11-20 11:58:03 +01:00
profile2linkerlist.pl profile2linkerlist: fix perl warnings 2010-03-07 21:39:33 +01:00
recordmcount.c metag: ftrace support 2013-03-02 20:09:55 +00:00
recordmcount.h recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in modules 2014-07-06 18:59:09 -07:00
recordmcount.pl ftrace: default to tilegx if ARCH=tile is specified 2013-12-05 15:59:26 -05:00
setlocalversion Fix detectition of kernel git repository in setlocalversion script [take #2] 2014-01-03 14:48:42 +01:00
show_delta show_delta: Update script to support python versions 2.5 through 3.3 2013-10-23 17:13:42 +02:00
sign-file MODSIGN: Add -s <signature> option to sign-file 2013-01-25 16:55:36 +10:30
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 scripts/tags.sh: Ignore *.mod.c 2014-02-06 16:52:07 +01:00
unifdef.c unifdef: update to upstream version 2.5 2011-01-22 15:50:59 +01:00
ver_linux Remove bashisms from scripts 2009-06-09 22:37:54 +02:00
xz_wrap.sh xz: Enable BCJ filters on SPARC and 32-bit x86 2012-04-18 13:13:18 -07:00