2.1.85 : Oops with knfsd

Thomas Pornin (bip@orion.ens.fr)
Fri, 6 Feb 1998 12:11:26 +0100


Hello,

I got a kernel oops while shutting down and then running again knfsd.
The nfs server support is compiled in the kernel, not a module. This is
2.1.85 (compiled with egcs 1.0.1 on an alpha).
What I did was :
/etc/rc.d/init.d/nfs stop
(4 seconds wait)
/etc/rc.d/init.d/nfs start

The nfs script does the following on stop:

echo -n "Shutting down NFS services: "
killall rpc.kmountd
killall nfsd

And on start it does this:

echo -n "Starting NFS services: "
daemon rpc.kmountd
daemon rpc.knfsd
kexportfs -a

Unable to handle kernel paging request at virtual address 010000000000c2ed
kexportfs(396): Oops 0
pc = [<fffffc000041f6e0>] ra = [<fffffc000036f030>] ps = 0000
r0 = ffffffffffffff92 r1 = 9200000000000000 r2 = 000000000000006e
r3 = 0000000000000000 r4 = 0000000000000000 r5 = fffffc0000458588
r6 = fffffc0001bb0820 r7 = 000000011fffecc0 r8 = fffffc0001f34000
r9 = fffffc0001bb0008 r10= 000000000000000f r11= 010000000000c2e5
r12= 000000011fffe4a0 r13= 0000000000000000 r14= 0000000000000000
r15= 0000000000000000
r16= 010000000000c2ed r17= fffffc0001bb0008 r18= 0000000000000000
r19= 0000000000000000 r20= 000000012010b210 r21= 000000012010b210
r22= fffffc00003687e0 r23= 00000155556fae3c r24= fffffc0000310b38
r25= 000000000000000a r27= fffffc000041f6e0 r28= fffffc0000368750
gp = fffffc000047e488 sp = fffffc0001f37e08
Code: 6bfa8001 00000000 00000000 <2c700000> 2c510000 487000c1 485100c2 40220521 48271721
Trace: [<fffffc00003687ec>] [<fffffc0000339cac>] [<fffffc000032ca60>] [<fffffc00003686e8>] [<fffffc0000310be0>] [<fffffc0000310b38>]

As ksymoops does not seem to know whatsoever about alpha architecture,
here is a handmade search:
[<fffffc000041f6e0>] is in fffffc000041f6e0 T strcmp
[<fffffc000036f030>] is in fffffc000036efb0 T exp_addclient
[<fffffc00003687ec>] is in fffffc0000368618 T sys_nfsservct
[<fffffc0000339cac>] is in fffffc0000339c40 T close_fp
[<fffffc000032ca60>] is in fffffc000032c7b8 T do_munmap
[<fffffc00003686e8>] is in fffffc0000368618 T sys_nfsservctl
[<fffffc0000310be0>] is in fffffc0000310b38 T entSys
[<fffffc0000310b38>] is in fffffc0000310b38 T entSys

And the code is:
6bfa8001 ret zero,(ra),0x1
00000000 halt
00000000 halt
2c700000 ldq_u t2,0(a0)
2c510000 ldq_u t1,0(a1)
487000c1 extbl t2,a0,t0
485100c2 extbl t1,a1,t1
40220521 subq t0,t1,t0
48271721 sll t0,0x38,t0

Apparently, exp_addclient (in fs/nfsd/export.c), for some reason, called
strcmp() with an incorrect first argument. This seems to be line 547:
if (!strcmp(clp->cl_ident, ncp->cl_ident))

I hope this info will be of some use for somebody.

--Thomas Pornin
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu