checkstack: fix printed address
commit ee34db3f271cea4d4252048617919c2caafe698b upstream. All addresses printed by checkstack have an extra incorrect 0 appended at the end. This was introduced with commit677f1410e0
("scripts/checkstack.pl: don't display $dre as different entity"): since then the address is taken from the line which contains the function name, instead of the line which contains stack consumption. E.g. on s390: 0000000000100a30 <do_one_initcall>: ... 100a44: e3 f0 ff 70 ff 71 lay %r15,-144(%r15) So the used regex which matches spaces and hexadecimal numbers to extract an address now matches a different substring. Subsequently replacing spaces with 0 appends a zero at the and, instead of replacing leading spaces. Fix this by using the proper regex, and simplify the code a bit. Link: https://lkml.kernel.org/r/20231120183719.2188479-2-hca@linux.ibm.com Fixes:677f1410e0
("scripts/checkstack.pl: don't display $dre as different entity") Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Cc: Maninder Singh <maninder1.s@samsung.com> Cc: Masahiro Yamada <masahiroy@kernel.org> Cc: Vaneet Narang <v.narang@samsung.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
762b0d529c
Коммит
ac3ccec33b
|
@ -142,15 +142,11 @@ $total_size = 0;
|
||||||
while (my $line = <STDIN>) {
|
while (my $line = <STDIN>) {
|
||||||
if ($line =~ m/$funcre/) {
|
if ($line =~ m/$funcre/) {
|
||||||
$func = $1;
|
$func = $1;
|
||||||
next if $line !~ m/^($xs*)/;
|
next if $line !~ m/^($x*)/;
|
||||||
if ($total_size > $min_stack) {
|
if ($total_size > $min_stack) {
|
||||||
push @stack, "$intro$total_size\n";
|
push @stack, "$intro$total_size\n";
|
||||||
}
|
}
|
||||||
|
$addr = "0x$1";
|
||||||
$addr = $1;
|
|
||||||
$addr =~ s/ /0/g;
|
|
||||||
$addr = "0x$addr";
|
|
||||||
|
|
||||||
$intro = "$addr $func [$file]:";
|
$intro = "$addr $func [$file]:";
|
||||||
my $padlen = 56 - length($intro);
|
my $padlen = 56 - length($intro);
|
||||||
while ($padlen > 0) {
|
while ($padlen > 0) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче