linux/arch/powerpc/lib
Michael Ellerman 7de063e7ae powerpc/lib: Fix the feature fixup tests to actually work
commit cad0e39023 upstream.

The code patching code has always been a bit confused about whether
it's best to use void *, unsigned int *, char *, etc. to point to
instructions. In fact in the feature fixups tests we use both unsigned
int[] and u8[] in different places.

Unfortunately the tests that use unsigned int[] calculate the size of
the code blocks using subtraction of those unsigned int pointers, and
then pass the result to memcmp(). This means we're only comparing 1/4
of the bytes we need to, because we need to multiply by
sizeof(unsigned int) to get the number of *bytes*.

The result is that the tests do all the patching and then only compare
some of the resulting code, so patching bugs that only effect that
last 3/4 of the code could slip through undetected. It turns out that
hasn't been happening, although one test had a bad expected case (see
previous commit).

Fix it for now by multiplying the size by 4 in the affected functions.

Fixes: 362e7701fd ("powerpc: Add self-tests of the feature fixup code")
Epic-brown-paper-bag-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2018-11-20 18:04:53 +00:00
..
alloc.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
checksum_32.S powerpc: Rename files to have consistent _32/_64 suffixes 2005-10-10 21:52:43 +10:00
checksum_64.S powerpc: Restore registers on error exit from csum_partial_copy_generic() 2013-10-03 17:22:42 +10:00
checksum_wrappers_64.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
code-patching.c powerpc: Move the patch_exception to a common place 2013-12-02 14:06:54 +11:00
copy_32.S powerpc: Fix incorrect .stabs entry for copy_32.S 2010-09-02 14:07:34 +10:00
copypage_64.S powerpc: Exported functions __clear_user and copy_page use r2 so need _GLOBAL_TOC() 2014-06-05 13:20:41 +10:00
copypage_power7.S powerpc: Fix unsafe accesses to parameter area in ELFv2 2014-04-23 10:05:24 +10:00
copyuser_64.S powerpc/64: Fix incorrect return value from __copy_tofrom_user 2017-02-23 03:54:11 +00:00
copyuser_power7.S powerpc: Fix unsafe accesses to parameter area in ELFv2 2014-04-23 10:05:24 +10:00
crtsavres.S powerpc: Add vr save/restore functions 2014-01-15 13:46:43 +11:00
devres.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
div64.S powerpc: Fix a corner case in __div64_32 2005-10-20 09:37:02 +10:00
feature-fixups-test.S powerpc/lib: Fix feature fixup test of external branch 2018-11-20 18:04:52 +00:00
feature-fixups.c powerpc/lib: Fix the feature fixup tests to actually work 2018-11-20 18:04:53 +00:00
hweight_64.S powerpc: No need to use dot symbols when branching to a function 2014-04-23 10:05:16 +10:00
ldstfp.S powerpc: Fixes for instructions not using correct register naming 2012-07-10 19:18:16 +10:00
locks.c powerpc: Add smp_mb()s to arch_spin_unlock_wait() 2014-10-05 13:41:08 -07:00
Makefile powerpc: memcpy optimization for 64bit LE 2014-04-30 15:26:18 +10:00
mem_64.S powerpc: use _GLOBAL_TOC for memmove 2014-07-22 15:56:04 +10:00
memcpy_64.S Merge remote-tracking branch 'anton/abiv2' into next 2014-05-05 20:57:12 +10:00
memcpy_power7.S powerpc: Fix unsafe accesses to parameter area in ELFv2 2014-04-23 10:05:24 +10:00
rheap.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
sstep.c powerpc: Fix emulation of mfocrf in emulate_step() 2017-10-12 15:28:04 +01:00
string.S powerpc: 64bit optimised __clear_user 2012-07-03 14:14:41 +10:00
string_64.S powerpc: Exported functions __clear_user and copy_page use r2 so need _GLOBAL_TOC() 2014-06-05 13:20:41 +10:00
usercopy_64.c powerpc: Rename files to have consistent _32/_64 suffixes 2005-10-10 21:52:43 +10:00
vmx-helper.c powerpc: POWER7 optimised copy_page using VMX and enhanced prefetch 2012-07-03 14:14:44 +10:00
xor_vmx.c powerpc: Add VMX optimised xor for RAID5 2013-10-30 16:02:28 +11:00