android_kernel_google_msm/scripts
Alex Smith 0e4c57c863 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:49:19 -07:00
..
basic fixdep: fix extraneous dependencies 2011-09-09 11:45:47 +02:00
coccinelle Merge branch 'akpm' (Andrew's patch-bomb) 2012-04-05 15:30:34 -07:00
dtc scripts: dtc: fix compile warnings 2012-03-24 23:07:35 +01:00
genksyms scripts/genksyms: clean lex/yacc generated files 2012-01-08 14:48:15 +01:00
kconfig localmodconfig: Fix localyesconfig to set to 'y' not 'm' 2012-10-13 05:38:39 +09:00
ksymoops
mod powerpc: Add vr save/restore functions 2014-05-18 05:25:56 -07:00
package deb-pkg: Fix cross-building linux-headers package 2014-03-30 21:40:30 -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
.gitignore kbuild: move scripts/basic/docproc.c to scripts/docproc.c 2011-05-02 22:48:03 +02:00
bin2c.c
bloat-o-meter bloat-o-meter: include read-only data section in report 2011-03-22 17:44:17 -07:00
bootgraph.pl bootgraph.pl: relax timing information requirements 2011-06-13 00:04:57 +02:00
checkincludes.pl checkincludes: fix perlcritic warnings 2010-03-07 21:19:57 +01:00
checkkconfigsymbols.sh checkkconfigsymbols.sh: Kconfig symbols sometimes have lowercase letters 2010-06-03 10:39:39 +02:00
checkpatch.pl checkpatch: revert --strict test for net/ and drivers/net block comment style 2012-04-16 12:44:38 -07:00
checkstack.pl Haavard Skinnemoen has left Atmel 2011-05-18 23:24:50 +02:00
checksyscalls.sh checksyscalls: Use arch/x86/syscalls/syscall_32.tbl as source 2011-11-17 13:35:37 -08:00
checkversion.pl kbuild: don't warn about include/linux/version.h not including itself 2011-04-29 15:38:55 +02:00
cleanfile
cleanpatch
coccicheck coccicheck: change handling of C={1,2} when M= is set 2012-02-24 23:50:19 +01:00
config kbuild: add numeric --set-val option to scripts/config 2010-12-15 15:44:31 +01:00
conmakehash.c
decodecode scripts: decodecode: remove bashisms 2010-06-04 10:26:35 +02:00
depmod.sh kbuild: do not check for ancient modutils tools 2012-01-23 15:12:19 +01:00
diffconfig
docproc.c docproc: cleanup brace placement 2011-06-16 20:40:03 +02: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 ARM: 7333/2: jump label: detect %c support for ARM 2012-03-24 09:38:56 +00:00
gcc-version.sh kbuild: Fix gcc -x syntax 2012-10-13 05:38:37 +09:00
gcc-x86_32-has-stack-protector.sh kbuild: Fix gcc -x syntax 2012-10-13 05:38:37 +09:00
gcc-x86_64-has-stack-protector.sh kbuild: Fix gcc -x syntax 2012-10-13 05:38:37 +09:00
gen_initramfs_list.sh Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2011-05-24 13:31:37 -07:00
get_maintainer.pl get_maintainer.pl: add support for moderated lists 2012-03-23 16:58:32 -07:00
gfp-translate scripts: fix gfp-translate for recent changes to gfp.h 2010-11-25 06:50:49 +09:00
headerdep.pl headerdep: perlcritic warning 2010-03-23 12:26:38 +01:00
headers.sh kbuild, headers.sh: Don't make archheaders explicitly 2011-11-22 14:47:50 -08:00
headers_check.pl headers_check: recursively search for linux/types.h inclusion 2012-03-26 14:54:27 +02:00
headers_install.pl headers_install: fix __packed in exported kernel headers 2011-06-24 16:56:05 +02:00
kallsyms.c scripts/kallsyms.c: fix potential segfault 2011-05-12 17:23:40 +02:00
Kbuild.include kbuild: Fix gcc -x syntax 2012-10-13 05:38:37 +09:00
kernel-doc kernel-doc: bugfix - multi-line macros 2013-10-01 09:10:52 -07:00
Lindent
Makefile x86, realmode: 16-bit real-mode code support for relocs tool 2012-05-18 19:49:40 -07:00
Makefile.asm-generic kbuild: silence Nothing to be done for 'all' message 2011-06-09 11:48:19 +02:00
Makefile.build kbuild: disable -Wmissing-field-initializers for W=1 2012-01-26 11:07:26 +01:00
Makefile.clean kbuild: Really don't clean bounds.h and asm-offsets.h 2010-03-11 11:15:22 +01:00
Makefile.fwinst
Makefile.headersinst kbuild: Add support for installing generated asm headers 2011-11-17 13:14:36 -08:00
Makefile.help Add a target to use the Coccinelle checker 2010-06-12 00:00:29 +02:00
Makefile.host
Makefile.lib Kbuild: centralize MKIMAGE and cmd_uimage definitions 2012-03-26 15:49:20 +02:00
Makefile.modbuiltin kbuild: Create output directory in Makefile.modbuiltin 2010-06-10 12:23:08 +02:00
Makefile.modinst
Makefile.modpost Merge commit 'v3.0-rc1' into kbuild/kbuild 2011-06-07 15:37:51 +02:00
makelst
markup_oops.pl Merge branch 'for-35' of git://repo.or.cz/linux-kbuild 2010-06-01 08:55:52 -07:00
mkcompile_h Fix handling of backlash character in LINUX_COMPILE_BY name 2011-04-29 15:55:45 +02:00
mkmakefile kbuild: silence generated makefile message 2011-07-20 17:08:08 +02:00
mksysmap
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
patch-kernel scripts/patch-kernel: digest kernel.org hosted .xz patches 2012-03-30 15:23:36 +02:00
pnmtologo.c
profile2linkerlist.pl profile2linkerlist: fix perl warnings 2010-03-07 21:39:33 +01:00
recordmcount.c ftrace/s390: mcount offset calculation 2011-05-16 15:05:06 -04:00
recordmcount.h recordmcount/MIPS: Fix possible incorrect mcount_loc table entries in modules 2014-07-06 18:49:19 -07:00
recordmcount.pl ftrace/s390: mcount offset calculation 2011-05-16 15:05:06 -04:00
setlocalversion setlocalversion: Use "grep -q" instead of piping output to "read dummy" 2012-03-26 22:54:00 +02:00
show_delta scripts: change scripts to use system python instead of env 2010-02-02 14:33:56 +01:00
tags.sh Subject: [PATCH] tags.sh: Add missing quotes 2012-04-02 11:28:17 +02:00
unifdef.c unifdef: update to upstream version 2.5 2011-01-22 15:50:59 +01:00
ver_linux
xz_wrap.sh xz: Enable BCJ filters on SPARC and 32-bit x86 2012-04-18 13:13:18 -07:00