dprintk("lockd: creating file for (%08x %08x %08x %08x %08x %08x)\n", fhp[0], fhp[1], fhp[2], fhp[3], fhp[4], fhp[5]); 
nlm_debug_print_fh("creating file for", f); 
nlm_lookup_file(struct svc_rqst *rqstp, struct nlm_file **result,					struct nfs_fh *f){	struct nlm_file	*file;	unsigned int	hash;	u32		nfserr;	u32		*fhp = (u32*)f->data;	dprintk("lockd: nlm_file_lookup(%08x %08x %08x %08x %08x %08x)\n",		fhp[0], fhp[1], fhp[2], fhp[3], fhp[4], fhp[5]);	hash = file_hash(f);	/* Lock file table */	down(&nlm_file_sema);	for (file = nlm_files[hash]; file; file = file->f_next)		if (!nfs_compare_fh(&file->f_handle, f))			goto found;	dprintk("lockd: creating file for (%08x %08x %08x %08x %08x %08x)\n",		fhp[0], fhp[1], fhp[2], fhp[3], fhp[4], fhp[5]);	nfserr = nlm_lck_denied_nolocks;	file = (struct nlm_file *) kmalloc(sizeof(*file), GFP_KERNEL);	if (!file)		goto out_unlock;	memset(file, 0, sizeof(*file));	memcpy(&file->f_handle, f, sizeof(struct nfs_fh));	file->f_hash = hash;	init_MUTEX(&file->f_sema);	/* Open the file. Note that this must not sleep for too long, else	 * we would lock up lockd:-) So no NFS re-exports, folks.	 *	 * We have to make sure we have the right credential to open	 * the file.	 */	if ((nfserr = nlmsvc_ops->fopen(rqstp, f, &file->f_file)) != 0) {		dprintk("lockd: open failed (nfserr %d)\n", ntohl(nfserr));		goto out_free;	}	file->f_next = nlm_files[hash];	nlm_files[hash] = file;found:	dprintk("lockd: found file %p (count %d)\n", file, file->f_count);	*result = file;	file->f_count++;	nfserr = 0;out_unlock:	up(&nlm_file_sema);	return nfserr;out_free:	kfree(file);#ifdef CONFIG_LOCKD_V4	if (nfserr == 1)		nfserr = nlm4_stale_fh;	else#endif	nfserr = nlm_lck_denied;	goto out_unlock;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/0bbacc402e67abca8794a8401c1621dc0c0202e9/svcsubs.c/buggy/fs/lockd/svcsubs.c