Skip to contentSkip to conversation

markup_oops.pl: fix get "No matching code found" when first line of range is the faulting instruction

PATCH Applied Hui Zhu 4 participants 6 messages Jan 28, 2010 – Jan 29, 2010 1 message not in the archive

lore
Share & tools
lore

Hui Zhu

author
#0 lore raw

PATCH 1/1 markup_oops.pl: fix get "No matching code found" when first line of range is the faulting instruction

Sorry guys, the prev mail for this patch is ugly.
I make a new mail for it.

I got a "No matching code found" when I use markup_oops.pl parse a error in a x8664 module.

cat e.c
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/module.h>

int init_module(void)

{
	char	*buf = 0;

	buf[0] = 3;

	return 0;
}

void cleanup_module(void)

{
	//char	*buf = 0;

	//buf[0] = 3;
}

MODULE_AUTHOR("Hui Zhu");
MODULE_LICENSE("GPL");

0000000000000000 <init_module>:
init_module():
/home/teawater/study/kernel/stack2core/example/e.c:10
0: c6 04 25 00 00 00 00 movb $0x3,0x0
7: 03
/home/teawater/study/kernel/stack2core/example/e.c:13

  8:	31 c0                	xor    %eax,%eax
  a:	c3                   	retq   
  b:	0f 1f 44 00 00       	nopl   0x0(%rax,%rax,1)

0000000000000010 <cleanup_module>:
cleanup_module():
/home/teawater/study/kernel/stack2core/example/e.c:20

 10:	f3 c3                	repz retq 
 12:	90                   	nop    
 13:	90                   	nop    

Disassembly of section .modinfo:

This is because the faulting instruction "movb $0x3,0x0" is the first line of the range.

In the markup_oops.pl:
main::(./scripts/markup_oops.pl:245):
245: if (InRange($1, $target)) {
DB<2> p $line
ffffffffa001b000: c6 04 25 00 00 00 00 movb $0x3,0x0
DB<3> p $counter
0

It just set $center in next loop.
So it cannot get the $center.

And even if $center is set to the right value 0.

if ($center == 0) {
	print "No matching code found \n";
	exit;
}

So I make a patch change this part to:

	}
	if ($state == 1) {

And this is another part is not OK too:
if ($center == 0) {
The first line $center will be 0, so I change the default value and decide to:
my $center = -1;
if ($center == -1) {

Thanks,
Hui

---
scripts/markup_oops.pl | 7 ++++---

1 file changed, 4 insertions(+), 3 deletions(-)
scripts/markup_oops.pl +0 -0
@@ -214,7 +214,7 @@ if ($module ne "") {
 

my $counter = 0;
my $state = 0;
-my $center = 0;
+my $center = -1;
my @lines;
my @reglines;

@@ -246,7 +246,8 @@ while (<FILE>) {
				$state = 1;
			}
		}
-	} else {
+	}
+	if ($state == 1) {
		if ($line =~ /^([a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]+)\:/) {
			my $val = $1;
			if (!InRange($val, $target)) {
@@ -269,7 +270,7 @@ if ($counter == 0) {
	exit;
}

-if ($center == 0) {

+if ($center == -1) {
	print "No matching code found \n";
	exit;
}
#1 lore raw
Quoted 2 lines · Hui Zhu

Sorry guys, the prev mail for this patch is ugly.
I make a new mail for it.

Random updates to scripts/* historically often go
in via the kbuild tree, so Michal added.

Sam

[Kept rest of mail so Michal can see it]

Quoted 112 lines

I got a "No matching code found" when I use markup_oops.pl parse a error in a x8664 module.

cat e.c
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/module.h>

int init_module(void)

{
	char	*buf = 0;

	buf[0] = 3;

	return 0;
}

void cleanup_module(void)

{
	//char	*buf = 0;

	//buf[0] = 3;
}

MODULE_AUTHOR("Hui Zhu");
MODULE_LICENSE("GPL");

0000000000000000 <init_module>:
init_module():
/home/teawater/study/kernel/stack2core/example/e.c:10
0: c6 04 25 00 00 00 00 movb $0x3,0x0
7: 03 /home/teawater/study/kernel/stack2core/example/e.c:13
8: 31 c0 xor %eax,%eax
a: c3 retq b: 0f 1f 44 00 00 nopl
0x0(%rax,%rax,1)

0000000000000010 <cleanup_module>:
cleanup_module():
/home/teawater/study/kernel/stack2core/example/e.c:20
10: f3 c3 repz retq 12: 90 nop
13: 90 nop Disassembly of section .modinfo:

This is because the faulting instruction "movb $0x3,0x0" is the first line of the range.

In the markup_oops.pl:
main::(./scripts/markup_oops.pl:245):
245: if (InRange($1, $target)) {
DB<2> p $line
ffffffffa001b000: c6 04 25 00 00 00 00 movb $0x3,0x0
DB<3> p $counter
0

It just set $center in next loop.
So it cannot get the $center.

And even if $center is set to the right value 0.

if ($center == 0) {
	print "No matching code found \n";
	exit;
}

So I make a patch change this part to:

	}
	if ($state == 1) {

And this is another part is not OK too:
if ($center == 0) {
The first line $center will be 0, so I change the default value and decide to:
my $center = -1;
if ($center == -1) {

Thanks,
Hui

---
scripts/markup_oops.pl | 7 ++++---

1 file changed, 4 insertions(+), 3 deletions(-)
scripts/markup_oops.pl +4 -3
@@ -214,7 +214,7 @@ if ($module ne "") {
 
 my $counter = 0;
 my $state   = 0;
-my $center  = 0;
+my $center  = -1;
 my @lines;
 my @reglines;
 
@@ -246,7 +246,8 @@ while (<FILE>) {
 				$state = 1;
 			}
 		}
-	} else {
+	}
+	if ($state == 1) {
 		if ($line =~ /^([a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]+)\:/) {
 			my $val = $1;
 			if (!InRange($val, $target)) {
@@ -269,7 +270,7 @@ if ($counter == 0) {
 	exit;
 }
 
-if ($center == 0) {
+if ($center == -1) {
 	print "No matching code found \n";
 	exit;
 }
#2 lore raw
Quoted 4 lines · Sam Ravnborg
Quoted 2 lines · Hui Zhu

Sorry guys, the prev mail for this patch is ugly.
I make a new mail for it.

Quoted 8 lines

Random updates to scripts/* historically often go
in via the kbuild tree, so Michal added.

       Sam

[Kept rest of mail so Michal can see it]

Quoted 1 line

Thanks Sam. And I make a small patch to make get_script.pl can output Michal Marek.

Hui

---
 MAINTAINERS |    4 ++++
 1 file changed, 4 insertions(+)
MAINTAINERS +4 -0
@@ -3086,6 +3086,10 @@ L:	[email protected]
 S:	Maintained
 F:	fs/autofs4/
 
+KERNEL SCRIPT
+M:	Michal Marek <[email protected]>
+F:	scripts/*
+
 KERNEL BUILD
 M:	Michal Marek <[email protected]>
 T:	git git://repo.or.cz/linux-kbuild.git for-next
#4 lore raw
In reply to a message not in the archive
Quoted 38 lines · Joe Perches
Quoted 30 lines · Hui Zhu
Quoted 4 lines · Sam Ravnborg
Quoted 2 lines · Hui Zhu

Sorry guys, the prev mail for this patch is ugly.
I make a new mail for it.

Quoted 8 lines

Random updates to scripts/* historically often go
in via the kbuild tree, so Michal added.

       Sam

[Kept rest of mail so Michal can see it]

Quoted 1 line

Thanks Sam.  And I make a small patch to make get_script.pl can output Michal Marek.

Hui

---
 MAINTAINERS |    4 ++++

 1 file changed, 4 insertions(+)
MAINTAINERS +0 -0
@@ -3086,6 +3086,10 @@ L:     [email protected]

 S:   Maintained
 F:   fs/autofs4/

MAINTAINERS

Quoted 4 lines
MAINTAINERS +4 -0
+KERNEL SCRIPT
+M:   Michal Marek <[email protected]>
+F:   scripts/*
+

probably not a good idea.

Quoted 9 lines

Maybe add

F:      scripts/markup_oops.pl
F:      scripts/mk*

to KERNEL BUILD

What about this?

---
 MAINTAINERS |    2 ++
 1 file changed, 2 insertions(+)
MAINTAINERS +2 -0
@@ -3095,6 +3095,8 @@ S:	Maintained
 F:	Documentation/kbuild/
 F:	Makefile
 F:	scripts/Makefile.*
+F:	scripts/markup_oops.pl
+F:	scripts/mk*
 
 KERNEL JANITORS
 L:	[email protected]
Applied
#6 lore raw
In reply to Sam Ravnborg

Sam Ravnborg napsal(a):

Quoted 6 lines · Hui Zhu
Quoted 2 lines

Sorry guys, the prev mail for this patch is ugly.
I make a new mail for it.

Random updates to scripts/* historically often go
in via the kbuild tree, so Michal added.

Thanks. I need to improve my filter :).

Quoted 8 lines
Quoted 8 lines

So I make a patch change this part to:

	}
	if ($state == 1) {

And this is another part is not OK too:
if ($center == 0) {
The first line $center will be 0, so I change the default value and decide to:
my $center = -1;
if ($center == -1) {

Thanks, applied with a slightly shortened changelog.

Michal

#5 lore raw
In reply to Hui Zhu

Hui Zhu napsal(a):

Quoted 11 lines

What about this?

---
 MAINTAINERS |    2 ++
 1 file changed, 2 insertions(+)

MAINTAINERS S: Maintained · line 3102

Quoted 8 lines
MAINTAINERS +2 -0
@@ -3095,6 +3095,8 @@ S:	Maintained
 F:	Documentation/kbuild/
 F:	Makefile
 F:	scripts/Makefile.*
+F:	scripts/markup_oops.pl
+F:	scripts/mk*
 
 KERNEL JANITORS
 L:	[email protected]

(somehow I was un-CCed again)

I don't know if we really need to mention every single script that has no "real" maintainer in the kbuild section. As noted by Joe, adding scripts/* is also not a good idea. scripts/get_maintainer.pl parses
Signed-off-by: lines, so after the first commit, my email should appear in the output anyway. For people reading the MAINTAINERS file themselves, what about this one?

Subject: [PATCH] MAINTAINERS: add a few more patterns to kbuild

Also, add a note that "unmaintained" files below scripts/ should go via the kbuild tree (best current practice).

MAINTAINERS +4 -1
index c8f47bf..f0c3e2f 100644
@@ -3088,7 +3088,7 @@ L:        [email protected]
 S:     Maintained
 F:     fs/autofs4/
 
-KERNEL BUILD
+KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
 M:     Michal Marek <[email protected]>
 T:     git git://repo.or.cz/linux-kbuild.git for-next
 T:     git git://repo.or.cz/linux-kbuild.git for-linus
@@ -3097,6 +3097,9 @@ S:        Maintained
 F:     Documentation/kbuild/
 F:     Makefile
 F:     scripts/Makefile.*
+F:     scripts/basic/
+F:     scripts/mk*
+F:     scripts/package/
 
 KERNEL JANITORS
 L:     [email protected]