if (pCFileStruct->srch_inf.endOfSearch == FALSE) { 
if ((pCFileStruct->srch_inf.endOfSearch == FALSE) && (pCFileStruct->invalidHandle == FALSE)) { 
int cifs_closedir(struct inode *inode, struct file *file){	int rc = 0;	int xid;	struct cifsFileInfo *pCFileStruct =	    (struct cifsFileInfo *)file->private_data;	char *ptmp;	cFYI(1, ("Closedir inode = 0x%p with ", inode));	xid = GetXid();	if (pCFileStruct) {		struct cifsTconInfo *pTcon;		struct cifs_sb_info *cifs_sb = CIFS_SB(file->f_dentry->d_sb);		pTcon = cifs_sb->tcon;		cFYI(1, ("Freeing private data in close dir"));		if (pCFileStruct->srch_inf.endOfSearch == FALSE) {			pCFileStruct->invalidHandle = TRUE;			rc = CIFSFindClose(xid, pTcon, pCFileStruct->netfid);			cFYI(1, ("Closing uncompleted readdir with rc %d",				 rc));			/* not much we can do if it fails anyway, ignore rc */			rc = 0;		}		ptmp = pCFileStruct->srch_inf.ntwrk_buf_start;		if (ptmp) {   /* BB removeme BB */	cFYI(1, ("freeing smb buf in srch struct in closedir"));			pCFileStruct->srch_inf.ntwrk_buf_start = NULL;			cifs_buf_release(ptmp);		}		ptmp = pCFileStruct->search_resume_name;		if (ptmp) {   /* BB removeme BB */	cFYI(1, ("freeing resume name in closedir"));			pCFileStruct->search_resume_name = NULL;			kfree(ptmp);		}		kfree(file->private_data);		file->private_data = NULL;	}	/* BB can we lock the filestruct while this is going on? */	FreeXid(xid);	return rc;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/31ca3bc3c569f9fe02aae6974ac3a9126f14902f/file.c/clean/fs/cifs/file.c