/* since paths are not looked up by component - the parent directories are presumed to be good here */ 
/* since paths are not looked up by component - the parent directories are presumed to be good here */ 
cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry, struct nameidata *nd){	int xid;	int rc = 0; /* to get around spurious gcc warning, set to zero here */	struct cifs_sb_info *cifs_sb;	struct cifsTconInfo *pTcon;	struct inode *newInode = NULL;	char *full_path = NULL;	xid = GetXid();	cFYI(1,	     (" parent inode = 0x%p name is: %s and dentry = 0x%p",	      parent_dir_inode, direntry->d_name.name, direntry));	/* BB Add check of incoming data - e.g. frame not longer than maximum SMB - let server check the namelen BB */	/* check whether path exists */	cifs_sb = CIFS_SB(parent_dir_inode->i_sb);	pTcon = cifs_sb->tcon;	/* can not grab the rename sem here since it would	deadlock in the cases (beginning of sys_rename itself)	in which we already have the sb rename sem */	full_path = build_path_from_dentry(direntry);	if(full_path == NULL) {		FreeXid(xid);		return ERR_PTR(-ENOMEM);	}	if (direntry->d_inode != NULL) {		cFYI(1, (" non-NULL inode in lookup"));	} else {		cFYI(1, (" NULL inode in lookup"));	}	cFYI(1,	     (" Full path: %s inode = 0x%p", full_path, direntry->d_inode));	if (pTcon->ses->capabilities & CAP_UNIX)		rc = cifs_get_inode_info_unix(&newInode, full_path,					      parent_dir_inode->i_sb,xid);	else		rc = cifs_get_inode_info(&newInode, full_path, NULL,					 parent_dir_inode->i_sb,xid);	if ((rc == 0) && (newInode != NULL)) {		if (pTcon->nocase)			direntry->d_op = &cifs_ci_dentry_ops;		else			direntry->d_op = &cifs_dentry_ops;		d_add(direntry, newInode);		/* since paths are not looked up by component - the parent directories are presumed to be good here */		renew_parental_timestamps(direntry);	} else if (rc == -ENOENT) {		rc = 0;		d_add(direntry, NULL);	} else {		cERROR(1,("Error 0x%x on cifs_get_inode_info in lookup of %s",			   rc,full_path));		/* BB special case check for Access Denied - watch security 		exposure of returning dir info implicitly via different rc 		if file exists or not but no access BB */	}	kfree(full_path);	FreeXid(xid);	return ERR_PTR(rc);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3abb92722ab1784b419dadb5444daf8ea9636905/dir.c/clean/fs/cifs/dir.c