Merge commit 'origin'
[linux-2.6.git] / arch / powerpc / include / asm / sections.h
index baf318aec533b60425e2f7ece08773c5e25f7cd3..6fbce725c710f97453079205e190c02c7365cd0b 100644 (file)
@@ -2,6 +2,8 @@
 #define _ASM_POWERPC_SECTIONS_H
 #ifdef __KERNEL__
 
+#include <linux/elf.h>
+#include <linux/uaccess.h>
 #include <asm-generic/sections.h>
 
 #ifdef __powerpc64__
@@ -23,7 +25,15 @@ static inline int overlaps_kernel_text(unsigned long start, unsigned long end)
 }
 
 #undef dereference_function_descriptor
-void *dereference_function_descriptor(void *);
+static inline void *dereference_function_descriptor(void *ptr)
+{
+       struct ppc64_opd_entry *desc = ptr;
+       void *p;
+
+       if (!probe_kernel_address(&desc->funcaddr, p))
+               ptr = p;
+       return ptr;
+}
 
 #endif