• Madhavan Srinivasan's avatar
    powerpc/xmon: Fix tmpstr length check in scanhex · 0405e128
    Madhavan Srinivasan authored
    If a function name is greater than 63 characters long, xmon command
    may not find them. For example, here is a test that executed an illegal
    instruction in a kernel function and one of call stack function has a
    name greater than 63 characters long:
    
      cpu 0x0: Vector: 700 (Program Check) at [c00000000a6577e0]
          pc: c0000000001aacb8: check__allowed__function__name__for__symbol__r4+0x8/0x10
          lr: c00000000019c1e0: check__allowed__function__name__for__symbol__r1+0x20/0x40
          sp: c00000000a657a80
         msr: 800000000288b033
        current = 0xc00000000a439900
        paca    = 0xc000000003e90000	 irqmask: 0x03	 irq_happened: 0x01
      .....
      [link register   ] c00000000019c1e0 check__allowed__function__name__for__symbol__r1+0x20/0x40
      [c00000000a657a80] c00000000a439900 (unreliable)
      [c00000000a657aa0] c0000000001021d8 check__allowed__function__name__for__symbol__r2_resolution_symbol+0x38/0x4c
      [c00000000a657ac0] c00000000019b424 power_pmu_event_init+0xa4/0xa50
    
    and when executing a dump instruction (di) command for long function
    name, xmon fails to find the function symbol:
    
      0:mon> di $check__allowed__function__name__for__symbol__r2_resolution_symbol
      unknown symbol 'check__allowed__function__name__for__symbol__r2_resolution_symb'
      0000000000000000  ********
    
    This is because in scanhex(), tmpstr loop index is checked only for
    a upper bound of 63.
    
    Fix it by replacing the upper bound value with (KSYM_NAME_LEN-1).
    
    With fix:
    
      0:mon> di $check__allowed__function__name__for__symbol__r2_resolution_symbol
      c0000000001021a0  3c4c0249	addis   r2,r12,585
      c0000000001021a4  3842ae60	addi    r2,r2,-20896
      c0000000001021a8  7c0802a6	mflr    r0
      c0000000001021ac  60000000	nop
      .....
    Reported-by: default avatarMiguel Ojeda <miguel.ojeda.sandonis@gmail.com>
    Closes: https://lore.kernel.org/linuxppc-dev/CANiq72=QeTgtZL4k9=4CJP6C_Hv=rh3fsn3B9S3KFoPXkyWk3w@mail.gmail.com/Signed-off-by: default avatarMadhavan Srinivasan <maddy@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240826064217.46658-1-maddy@linux.ibm.com
    0405e128
xmon.c 92 KB