Christophe Leroy <christophe.leroy@xxxxxxxxxx> writes: > diff --git a/kernel/extable.c b/kernel/extable.c > index b0ea5eb0c3b4..1ef13789bea9 100644 > --- a/kernel/extable.c > +++ b/kernel/extable.c > @@ -159,12 +160,32 @@ int kernel_text_address(unsigned long addr) > } > > /* > - * On some architectures (PPC64, IA64) function pointers > + * On some architectures (PPC64, IA64, PARISC) function pointers > * are actually only tokens to some data that then holds the > * real function address. As a result, to find if a function > * pointer is part of the kernel text, we need to do some > * special dereferencing first. > */ > +#ifdef CONFIG_HAVE_FUNCTION_DESCRIPTORS > +void *dereference_function_descriptor(void *ptr) > +{ > + func_desc_t *desc = ptr; > + void *p; > + > + if (!get_kernel_nofault(p, (void *)&desc->addr)) > + ptr = p; > + return ptr; > +} This needs an EXPORT_SYMBOL_GPL(), otherwise the build breaks after patch 10 with CONFIG_LKDTM=m. cheers