Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

scripts/gdb/linux/symbols.py: address changes to module_sect_attrs

When loading symbols from kernel modules we used to iterate
from 0 to module_sect_attrs::nsections, in order to
retrieve their name and address.

However module_sect_attrs::nsections has been removed from
the struct by a previous commit.

Re-arrange the iteration by accessing all items in
module_sect_attrs::grp::bin_attrs[] until NULL is found
(it's a NULL terminated array).

At the same time the symbol address cannot be extracted
from module_sect_attrs::attrs[]::address anymore because
it has also been deleted. Fetch it from
module_sect_attrs::grp::bin_attrs[]::private as described
in 4b2c11e4aaf7.

Link: https://lkml.kernel.org/r/20250221204034.4430-1-antonio@mandelbit.com
Fixes: d8959b947a8d ("module: sysfs: Drop member 'module_sect_attrs::nsections'")
Fixes: 4b2c11e4aaf7 ("module: sysfs: Drop member 'module_sect_attr::address'")
Signed-off-by: Antonio Quartulli <antonio@mandelbit.com>
Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
Cc: Thomas Weißschuh <linux@weissschuh.net>
Cc: Kieran Bingham <kbingham@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Antonio Quartulli and committed by
Andrew Morton
e0349c46 f8731364

+9 -4
+9 -4
scripts/gdb/linux/symbols.py
··· 15 15 import os 16 16 import re 17 17 18 + from itertools import count 18 19 from linux import modules, utils, constants 19 20 20 21 ··· 96 95 except gdb.error: 97 96 return str(module_addr) 98 97 99 - attrs = sect_attrs['attrs'] 100 - section_name_to_address = { 101 - attrs[n]['battr']['attr']['name'].string(): attrs[n]['address'] 102 - for n in range(int(sect_attrs['nsections']))} 98 + section_name_to_address = {} 99 + for i in count(): 100 + # this is a NULL terminated array 101 + if sect_attrs['grp']['bin_attrs'][i] == 0x0: 102 + break 103 + 104 + attr = sect_attrs['grp']['bin_attrs'][i].dereference() 105 + section_name_to_address[attr['attr']['name'].string()] = attr['private'] 103 106 104 107 textaddr = section_name_to_address.get(".text", module_addr) 105 108 args = []