From: Liu Ping Fan <kernelfans@gmail.com>
Subject: powerpc/ftrace: bugfix for test_24bit_addr
Git-commit: a95fc58549e8f462e560868a16b1fa97b12d5db6
Patch-mainline: v3.14-rc5
References: bnc#878240 
    
    The branch target should be the func addr, not the addr of func_descr_t.
    So using ppc_function_entry() to generate the right target addr.
    
Signed-off-by: Liu Ping Fan <pingfank@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Torsten Duwe <duwe@suse.de>

 arch/powerpc/kernel/ftrace.c | 1 +
 1 file changed, 1 insertion(+)
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c
index 9b27b29..b0ded97 100644
--- a/arch/powerpc/kernel/ftrace.c
+++ b/arch/powerpc/kernel/ftrace.c
@@ -74,6 +74,7 @@ ftrace_modify_code(unsigned long ip, unsigned int old, unsigned int new)
  */
 static int test_24bit_addr(unsigned long ip, unsigned long addr)
 {
+	addr = ppc_function_entry((void *)addr);
 
 	/* use the create_branch to verify that this offset can be branched */
 	return create_branch((unsigned int *)ip, addr, 0);
