Skip to contentSkip to conversation

OOPS kernel2.5.17 in vatfs?

DISCUSSION Rene Blokland 2 participants 4 messages May 21, 2002 – May 22, 2002

lore
Share & tools
lore
#0 lore raw

Hi all When installing vmlinuz op a fat partinion i get a nice :-/ oops If you need more information please tell me.
Thanks Rene

ksymoops 2.4.5 on i586 2.5.17. Options used

     -V (default)
     -K (specified)
     -L (specified)
     -o /lib/modules/2.5.17/ (default)
     -m /usr/src/linux/System.map (default)
     -I

No modules in ksyms, skipping objects

Unable to handle kernel NULL pointer dereference at virtual address 0000004c
c0161018
*pde = 00000000
Oops: 0002
CPU:    0
EIP:    0010:[msdos_lookup+120/224]    Not tainted
EFLAGS: 00010246
eax: 00000000   ebx: d23247c0   ecx: d3f32a68   edx: d23247d0
esi: d1bdf1e0   edi: d38bec00   ebp: d23247c0   esp: d2549e6c
ds: 0018   es: 0018   ss: 0018
Stack: d1bdf1e0 d23247c0 00000000 d1be0420 d1bde300 00001d98 fffffff4 d1bdf0dc
       d1bdf080 c013aa0f d1bdf080 d23247c0 00000000 00000000 d2549f38 d3ff6520
       c013acb8 d23246c0 d2549f00 00000004 d2549f00 00000000 d330900b d2549f38
Call Trace: [real_lookup+143/192] [do_lookup+280/416] [link_path_walk+424/2112] [__user_walk+42/64] [vfs_lstat+23/96]
Code: c7 40 4c 44 17 27 c0 89 c3 59 5e c7 04 24 00 00 00 00 8b 44

Using defaults from ksymoops -t elf32-i386 -a i386

Quoted 7 lines
Quoted 7 lines

ebx; d23247c0 <END_OF_CODE+1202e464/????>
ecx; d3f32a68 <END_OF_CODE+13c3c70c/????>
edx; d23247d0 <END_OF_CODE+1202e474/????>
esi; d1bdf1e0 <END_OF_CODE+118e8e84/????>
edi; d38bec00 <END_OF_CODE+135c88a4/????>
ebp; d23247c0 <END_OF_CODE+1202e464/????>
esp; d2549e6c <END_OF_CODE+12253b10/????>

Code; 00000000 Before first symbol
00000000 <_EIP>:
Code; 00000000 Before first symbol
0: c7 40 4c 44 17 27 c0 movl $0xc0271744,0x4c(%eax)
Code; 00000007 Before first symbol
7: 89 c3 mov %eax,%ebx
Code; 00000009 Before first symbol
9: 59 pop %ecx
Code; 0000000a Before first symbol
a: 5e pop %esi
Code; 0000000b Before first symbol
b: c7 04 24 00 00 00 00 movl $0x0,(%esp,1)
Code; 00000012 Before first symbol
12: 8b 44 00 00 mov 0x0(%eax,%eax,1),%eax

<1>Unable to handle kernel NULL pointer dereference at virtual address 0000004c
c0161018
*pde = 00000000

Oops: 0002
CPU:    0
EIP:    0010:[msdos_lookup+120/224]    Not tainted
EFLAGS: 00010246
eax: 00000000   ebx: d2324740   ecx: d3f3e9e0   edx: d2324750
esi: d1bdf340   edi: d38bec00   ebp: d2324740   esp: d2549e6c
ds: 0018   es: 0018   ss: 0018
Stack: d1bdf340 d2324740 00000000 d1be0e20 d2031260 00028793 fffffff4 d1bdf23c
       d1bdf1e0 c013aa0f d1bdf1e0 d2324740 00000000 00000000 d2549f38 d3ff6520
       c013acb8 d23247c0 d2549f00 00000004 d2549f00 00000000 d2549f00 d2549f38
Call Trace: [real_lookup+143/192] [do_lookup+280/416] [link_path_walk+1148/2112] [__user_walk+42/64] [vfs_lstat+23/96]
Code: c7 40 4c 44 17 27 c0 89 c3 59 5e c7 04 24 00 00 00 00 8b 44
Quoted 7 lines
Quoted 7 lines

ebx; d2324740 <END_OF_CODE+1202e3e4/????>
ecx; d3f3e9e0 <END_OF_CODE+13c48684/????>
edx; d2324750 <END_OF_CODE+1202e3f4/????>
esi; d1bdf340 <END_OF_CODE+118e8fe4/????>
edi; d38bec00 <END_OF_CODE+135c88a4/????>
ebp; d2324740 <END_OF_CODE+1202e3e4/????>
esp; d2549e6c <END_OF_CODE+12253b10/????>

Code; 00000000 Before first symbol
00000000 <_EIP>:
Code; 00000000 Before first symbol
0: c7 40 4c 44 17 27 c0 movl $0xc0271744,0x4c(%eax)
Code; 00000007 Before first symbol
7: 89 c3 mov %eax,%ebx
Code; 00000009 Before first symbol
9: 59 pop %ecx
Code; 0000000a Before first symbol
a: 5e pop %esi
Code; 0000000b Before first symbol
b: c7 04 24 00 00 00 00 movl $0x0,(%esp,1)
Code; 00000012 Before first symbol
12: 8b 44 00 00 mov 0x0(%eax,%eax,1),%eax

--
Groeten / Regards, Rene J. Blokland

#1 lore raw
Quoted 3 lines · Rene Blokland

Hi all When installing vmlinuz op a fat partinion i get a nice :-/ oops If you need more information please tell me.
Thanks Rene

Probably, the following patch fixes this. NOTE, however I haven't even compiled this yet.

fs/vfat/namei.c renamed from fs/vfat/namei.c.orig +5 -9
@@ -1020,16 +1020,12 @@
 	unlock_kernel();
 	dentry->d_op = &vfat_dentry_ops[table];
 	dentry->d_time = dentry->d_parent->d_inode->i_version;
-	if (inode) {
-		dentry = d_splice_alias(inode, dentry);
-		if (dentry) {
-			dentry->d_op = &vfat_dentry_ops[table];
-			dentry->d_time = dentry->d_parent->d_inode->i_version;
-		}
-		return dentry;
+	dentry = d_splice_alias(inode, dentry);
+	if (dentry) {
+		dentry->d_op = &vfat_dentry_ops[table];
+		dentry->d_time = dentry->d_parent->d_inode->i_version;
 	}
-	d_add(dentry,inode);
-	return NULL;
+	return dentry;
 }
 
 int vfat_create(struct inode *dir,struct dentry* dentry,int mode)
fs/msdos/namei.c renamed from fs/msdos/namei.c.orig +5 -10
@@ -221,22 +221,17 @@
 	if (res)
 		goto out;
 add:
-	if (inode) {
-		dentry = d_splice_alias(inode, dentry);
-		dentry->d_op = &msdos_dentry_operations;
-	} else {
-		d_add(dentry, inode);
-		dentry = NULL;
-	}
 	res = 0;
+	dentry = d_splice_alias(inode, dentry);
+	if (dentry)
+		dentry->d_op = &msdos_dentry_operations;
 out:
 	if (bh)
 		fat_brelse(sb, bh);
 	unlock_kernel();
-	if (res)
-		return ERR_PTR(res);
-	else
+	if (!res)
 		return dentry;
+	return ERR_PTR(res);
 }
 
 /***** Creates a directory entry (name is already formatted). */
Signature · 1 line
OGAWA Hirofumi <[email protected]>
#2 lore raw

Re: OOPS kernel2.5.17 in vatfs? !SOLVED!

In reply to Rene Blokland

Hi OGAWA Hirofumi san
This solves the oops pervect please sent it to Linus san Thank you for ypour help!

Quoted 46 lines · OGAWA Hirofumi
fs/vfat/namei.c renamed from fs/vfat/namei.c.orig +5 -9
@@ -1020,16 +1020,12 @@
 	unlock_kernel();
 	dentry->d_op = &vfat_dentry_ops[table];
 	dentry->d_time = dentry->d_parent->d_inode->i_version;
-	if (inode) {
-		dentry = d_splice_alias(inode, dentry);
-		if (dentry) {
-			dentry->d_op = &vfat_dentry_ops[table];
-			dentry->d_time = dentry->d_parent->d_inode->i_version;
-		}
-		return dentry;
+	dentry = d_splice_alias(inode, dentry);
+	if (dentry) {
+		dentry->d_op = &vfat_dentry_ops[table];
+		dentry->d_time = dentry->d_parent->d_inode->i_version;
 	}
-	d_add(dentry,inode);
-	return NULL;
+	return dentry;
 }
 
 int vfat_create(struct inode *dir,struct dentry* dentry,int mode)
fs/msdos/namei.c renamed from fs/msdos/namei.c.orig +3 -7
@@ -221,22 +221,17 @@
 	if (res)
 		goto out;
 add:
-	if (inode) {
-		dentry = d_splice_alias(inode, dentry);
-		dentry->d_op = &msdos_dentry_operations;
-	} else {
-		d_add(dentry, inode);
-		dentry = NULL;
-	}
 	res = 0;
+	dentry = d_splice_alias(inode, dentry);
+	if (dentry)
+		dentry->d_op = &msdos_dentry_operations;
 out:
 	if (bh)
 		fat_brelse(sb, bh);

fs/msdos/namei.c line 237

Quoted 10 lines
fs/msdos/namei.c renamed from fs/msdos/namei.c.orig +2 -3
 	unlock_kernel();
-	if (res)
-		return ERR_PTR(res);
-	else
+	if (!res)
 		return dentry;
+	return ERR_PTR(res);
 }
 
 /***** Creates a directory entry (name is already formatted). */

--
Groeten / Regards, Rene J. Blokland

#3 lore raw

Re: OOPS kernel2.5.17 in vatfs? !SOLVED!

In reply to Rene Blokland
Quoted 1 line · Rene Blokland

Hi OGAWA Hirofumi san

Hi, Rene san :)

Quoted 2 lines

This solves the oops pervect please sent it to Linus san Thank you for ypour help!

Thanks for testing. I'll submit that patch at this weekend.

Signature · 1 line
OGAWA Hirofumi <[email protected]>