smb related problem
John Baldwin
jhb at freebsd.org
Tue Jun 19 00:03:20 UTC 2007
On Sunday 17 June 2007 06:27:46 am Takanori Saneto wrote:
> OK, here it is:
>
> smb_co_lock: recursive lock for object 1
> panic: recursive lock for object 0xc1b3e600
> KDB: enter: panic
> [thread pid 592 tid 100032 ]
> Stopped at kdb_enter+0x32: leave
> db> bt
> Tracing pid 592 tid 100032 td 0xc1a44e00
> kdb_enter(c060f652, c066e920,c1b89b5a,cc398a70,cc398a70,...) at
> kdb_enter+0x32
> panic(x1b89b5a,c1b3e600,1,c1bc0638,cc398ab0,...) at panic+0xc4
> smb_share_lock(c1b3e600,2,c1a44e00,c,c1a44e00,...) at smb_share_lock
> smb_co_gone(c1bc0600,cc398ba4,cc398ba4,cc398ac8,c1bc0600,...) at
> smb_co_gone+0x3a
> smb_sm_lookup(cc398af4,cc398b30,cc398ba4,cc398b4c,c199041c,...) at
> smb_sm_lookup+0x16b
> smb_usr_lookup(c1990400,cc398ba4,cc398bb0,cc398bac,c060ac51,...) at
> smb_usr_lookup+0x95
> nsmb_dev_ioctl(c1b5b100,82fc6e6a,c1990400,3,c1a44e00,...) at
> nsmb_dev_ioctl+0x1d6
Hmm, ok. Try this maybe:
Index: smb_conn.c
===================================================================
RCS file: /usr/cvs/src/sys/netsmb/smb_conn.c,v
retrieving revision 1.18
diff -u -r1.18 smb_conn.c
--- smb_conn.c 6 Nov 2006 13:42:06 -0000 1.18
+++ smb_conn.c 18 Jun 2007 22:12:33 -0000
@@ -212,8 +212,11 @@
error = smb_smb_treeconnect(ssp, scred);
if (error == 0)
vcspec->ssp = ssp;
- else
+ else {
+ smb_vc_put(vcp, scred);
+ vcp = NULL;
smb_share_put(ssp, scred);
+ }
out:
smb_sm_unlockvclist(td);
if (error == 0)
@@ -351,6 +354,7 @@
if (smb_co_lockstatus(cp, td) == LK_EXCLUSIVE &&
(flags & LK_CANRECURSE) == 0) {
SMBERROR("recursive lock for object %d\n", cp->co_level);
+ panic("recursive lock for object %p", cp);
return 0;
}
return lockmgr(&cp->co_lock, flags, &cp->co_interlock, td);
--
John Baldwin
More information about the freebsd-current
mailing list