cFYI(1, (" Tree disconnect failed %d", rc)); 
cFYI(1, ("Tree disconnect failed %d", rc)); 
CIFSSMBTDis(const int xid, struct cifsTconInfo *tcon){	struct smb_hdr *smb_buffer;	struct smb_hdr *smb_buffer_response; /* BB removeme BB */	int rc = 0;	int length;	cFYI(1, ("In tree disconnect"));	/*	 *  If last user of the connection and	 *  connection alive - disconnect it	 *  If this is the last connection on the server session disconnect it	 *  (and inside session disconnect we should check if tcp socket needs 	 *  to be freed and kernel thread woken up).	 */	if (tcon)		down(&tcon->tconSem);	else		return -EIO;	atomic_dec(&tcon->useCount);	if (atomic_read(&tcon->useCount) > 0) {		up(&tcon->tconSem);		return -EBUSY;	}	/* No need to return error on this operation if tid invalidated and 	closed on server already e.g. due to tcp session crashing */	if(tcon->tidStatus == CifsNeedReconnect) {		up(&tcon->tconSem);		return 0;  	}	if((tcon->ses == NULL) || (tcon->ses->server == NULL)) {    		up(&tcon->tconSem);		return -EIO;	}	rc = small_smb_init(SMB_COM_TREE_DISCONNECT, 0, tcon, (void **)&smb_buffer);	if (rc) {		up(&tcon->tconSem);		return rc;	} else {		smb_buffer_response = smb_buffer; /* BB removeme BB */    }	rc = SendReceive(xid, tcon->ses, smb_buffer, smb_buffer_response,			 &length, 0);	if (rc)		cFYI(1, (" Tree disconnect failed %d", rc));	if (smb_buffer)		cifs_small_buf_release(smb_buffer);	up(&tcon->tconSem);	/* No need to return error on this operation if tid invalidated and 	closed on server already e.g. due to tcp session crashing */	if (rc == -EAGAIN)		rc = 0;	return rc;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/966ca9234754ece58870075972ef103e354de075/cifssmb.c/buggy/fs/cifs/cifssmb.c