Skip to content
  • Naveen N. Rao's avatar
    powerpc64/elfv1: Only dereference function descriptor for non-text symbols · 83e840c7
    Naveen N. Rao authored
    
    
    Currently, we assume that the function pointer we receive in
    ppc_function_entry() points to a function descriptor. However, this is
    not always the case. In particular, assembly symbols without the right
    annotation do not have an associated function descriptor. Some of these
    symbols are added to the kprobe blacklist using _ASM_NOKPROBE_SYMBOL().
    
    When such addresses are subsequently processed through
    arch_deref_entry_point() in populate_kprobe_blacklist(), we see the
    below errors during bootup:
        [    0.663963] Failed to find blacklist at 7d9b02a648029b6c
        [    0.663970] Failed to find blacklist at a14d03d0394a0001
        [    0.663972] Failed to find blacklist at 7d5302a6f94d0388
        [    0.663973] Failed to find blacklist at 48027d11e8610178
        [    0.663974] Failed to find blacklist at f8010070f8410080
        [    0.663976] Failed to find blacklist at 386100704801f89d
        [    0.663977] Failed to find blacklist at 7d5302a6f94d00b0
    
    Fix this by checking if the function pointer we receive in
    ppc_function_entry() already points to kernel text. If so, we just
    return it as is. If not, we assume that this is a function descriptor
    and proceed to dereference it.
    
    Suggested-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Reviewed-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Signed-off-by: default avatarNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    83e840c7