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