full_path = build_path_from_dentry(file->f_dentry, cifs_sb); 
full_path = build_path_from_dentry(file->f_dentry); 
static int initiate_cifs_search(const int xid, struct file *file){	int rc = 0;	char * full_path;	struct cifsFileInfo * cifsFile;	struct cifs_sb_info *cifs_sb;	struct cifsTconInfo *pTcon;	if(file->private_data == NULL) {		file->private_data = 			kmalloc(sizeof(struct cifsFileInfo),GFP_KERNEL);	}	if(file->private_data == NULL) {		return -ENOMEM;	} else {		memset(file->private_data,0,sizeof(struct cifsFileInfo));	}	cifsFile = file->private_data;	cifsFile->invalidHandle = TRUE;	cifsFile->srch_inf.endOfSearch = FALSE;	if(file->f_dentry == NULL)		return -ENOENT;	cifs_sb = CIFS_SB(file->f_dentry->d_sb);	if(cifs_sb == NULL)		return -EINVAL;	pTcon = cifs_sb->tcon;	if(pTcon == NULL)		return -EINVAL;	down(&file->f_dentry->d_sb->s_vfs_rename_sem);	full_path = build_path_from_dentry(file->f_dentry, cifs_sb);	up(&file->f_dentry->d_sb->s_vfs_rename_sem);	if(full_path == NULL) {		return -ENOMEM;	}	cFYI(1, ("Full path: %s start at: %lld", full_path, file->f_pos));ffirst_retry:	/* test for Unix extensions */	if (pTcon->ses->capabilities & CAP_UNIX) {		cifsFile->srch_inf.info_level = SMB_FIND_FILE_UNIX; 	} else if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) {		cifsFile->srch_inf.info_level = SMB_FIND_FILE_ID_FULL_DIR_INFO;	} else /* not srvinos - BB fixme add check for backlevel? */ {		cifsFile->srch_inf.info_level = SMB_FIND_FILE_DIRECTORY_INFO;	}	rc = CIFSFindFirst(xid, pTcon,full_path,cifs_sb->local_nls,		&cifsFile->netfid, &cifsFile->srch_inf,		cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR, CIFS_DIR_SEP(cifs_sb));	if(rc == 0)		cifsFile->invalidHandle = FALSE;	if((rc == -EOPNOTSUPP) && 		(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)) {		cifs_sb->mnt_cifs_flags &= ~CIFS_MOUNT_SERVER_INUM;		goto ffirst_retry;	}	kfree(full_path);	return rc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/7f57356b70dda014ef269135942426e4a852023e/readdir.c/clean/fs/cifs/readdir.c