mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-09 16:07:17 -04:00
0405e128110d47a40443936e68dc32d7bc4ccc0b
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: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Closes: https://lore.kernel.org/linuxppc-dev/CANiq72=QeTgtZL4k9=4CJP6C_Hv=rh3fsn3B9S3KFoPXkyWk3w@mail.gmail.com/
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20240826064217.46658-1-maddy@linux.ibm.com
Merge tag 'driver-core-6.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Linux kernel
============
There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.
In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``. The formatted documentation can also be read online at:
https://www.kernel.org/doc/html/latest/
There are various text files in the Documentation/ subdirectory,
several of them using the reStructuredText markup notation.
Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.
Description
Languages
C
97%
Assembly
1%
Shell
0.6%
Rust
0.5%
Python
0.4%
Other
0.3%