test_translate_branch() uses two pointers to instructions within a buffer, p and q, to test patch_branch(). The pointer arithmetic done on them assumes a size of 4. This will not work if the instruction length changes. Instead do the arithmetic relative to the void * to the buffer.
Signed-off-by: Jordan Niethe <jniet...@gmail.com> --- v4: New to series --- arch/powerpc/lib/code-patching.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/lib/code-patching.c b/arch/powerpc/lib/code-patching.c index 88ee03ff55f1..fa7f32adf029 100644 --- a/arch/powerpc/lib/code-patching.c +++ b/arch/powerpc/lib/code-patching.c @@ -563,7 +563,7 @@ static void __init test_branch_bform(void) static void __init test_translate_branch(void) { unsigned long addr; - ppc_inst *p, *q; + void *p, *q; void *buf; buf = vmalloc(PAGE_ALIGN(0x2000000 + 1)); @@ -576,7 +576,7 @@ static void __init test_translate_branch(void) addr = (unsigned long)p; patch_branch(p, addr, 0); check(instr_is_branch_to_addr(p, addr)); - q = p + 1; + q = buf + 4; patch_instruction(q, translate_branch(q, p)); check(instr_is_branch_to_addr(q, addr)); @@ -626,7 +626,7 @@ static void __init test_translate_branch(void) addr = (unsigned long)p; patch_instruction(p, create_cond_branch(p, addr, 0)); check(instr_is_branch_to_addr(p, addr)); - q = p + 1; + q = buf + 4; patch_instruction(q, translate_branch(q, p)); check(instr_is_branch_to_addr(q, addr)); -- 2.17.1