Skip to contentSkip to conversation

nfsd oops 2.6.7-rc1

DISCUSSION William Lee Irwin III 2 participants 4 messages May 29, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

While idle, the following oops happened. On virgin 2.6.7-rc1.

-- wli

 ------------[ cut here ]------------
 kernel BUG at include/linux/dcache.h:276!
 invalid operand: 0000 [#1]
 Modules linked in:
 CPU:    0
 EIP:    0060:[<c01e1de1>]    Not tainted
 EFLAGS: 00010246   (2.6.7-rc1-holomorphy-1) 
 EIP is at fh_compose+0x3d1/0x430
 eax: 00000000   ebx: 00800070   ecx: effe8d14   edx: 00000020
 esi: e29bf800   edi: 00000000   ebp: ddc24f58   esp: e29b3eb0
 ds: 007b   es: 007b   ss: 0068
 Process nfsd (pid: 1335, threadinfo=e29b3000 task=e29c0410)
 Stack: 00000000 edd2444c c014b66f e29b3ed4 e432c0c0 8191bdfa ddc24b4c ddc24b4c 
        eca73d0c 0100bdfa effe8d14 0000001a ddc24f58 ddc24f58 e29ce000 e432c0a6 
        c01e247b e29ce000 00000001 effe7314 c0419bee ddc24b4c e2a23000 effe8d14 
 Call Trace:
  [<c014b66f>] __lookup_hash+0x5f/0xb0
  [<c01e247b>] nfsd_lookup+0x12b/0x420
  [<c0419bee>] svcauth_unix_accept+0x23e/0x280
  [<c01e0513>] nfsd_proc_lookup+0x53/0xa0
  [<c01e82c4>] nfssvc_decode_diropargs+0x54/0xb0
  [<c01e8270>] nfssvc_decode_diropargs+0x0/0xb0
  [<c01dfb36>] nfsd_dispatch+0xb6/0x1c0
  [<c0416523>] svc_process+0x463/0x5c0
  [<c01df92f>] nfsd+0x16f/0x2c0
  [<c01df7c0>] nfsd+0x0/0x2c0
  [<c0103a7d>] kernel_thread_helper+0x5/0x18
 
 Code: 0f 0b 14 01 ba 29 44 c0 e9 99 fd ff ff 8b 45 18 8b 4c 24 1c 
#1 lore raw
Quoted 2 lines · On Friday May 28, [email protected] wrote:

While idle, the following oops happened. On virgin 2.6.7-rc1.

Ok, I think I've found it. There is a missing dget. See below/. NeilBrown

=====================================================
Another missing dget

The recentish change to fh_compose not consuming a reference to the passed dentries missed this needed dget.

----------- Diffstat output ------------

 ./fs/nfsd/vfs.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)
fs/nfsd/vfs.c renamed from fs/nfsd/vfs.c~current~ +1 -1
diff ./fs/nfsd/vfs.c~current~ ./fs/nfsd/vfs.c
@@ -899,7 +899,7 @@ nfsd_create(struct svc_rqst *rqstp, stru
 			goto out;
 	} else {
 		/* called from nfsd_proc_create */
-		dchild = resfhp->fh_dentry;
+		dchild = dget(resfhp->fh_dentry);
 		if (!fhp->fh_locked) {
 			/* not actually possible */
 			printk(KERN_ERR
#2 lore raw
Quoted 2 lines · On Friday May 28, [email protected] wrote:
Quoted 2 lines

While idle, the following oops happened. On virgin 2.6.7-rc1.

Quoted 2 lines · Neil Brown

Ok, I think I've found it. There is a missing dget. See below/. NeilBrown

Thanks! Testing ETA 10-15 minutes (time needed for kernel compiles).

-- wli

#3 lore raw
Quoted 2 lines · Neil Brown
Quoted 2 lines

Ok, I think I've found it. There is a missing dget. See below/. NeilBrown

Quoted 1 line · William Lee Irwin III

Thanks! Testing ETA 10-15 minutes (time needed for kernel compiles).

No oopsen for 30 minutes so it's working wonderfully thus far, but I've seen things go wrong a number of hours out from boot before. I'll try to follow up with another ack after it's been longer.

-- wli