if (delegation != NULL) kfree(delegation); 
kfree(delegation); 
int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, struct nfs_openres *res){	struct nfs4_client *clp = NFS_SERVER(inode)->nfs4_state;	struct nfs_inode *nfsi = NFS_I(inode);	struct nfs_delegation *delegation;	int status = 0;	/* Ensure we first revalidate the attributes and page cache! */	if ((nfsi->cache_validity & (NFS_INO_REVAL_PAGECACHE|NFS_INO_INVALID_ATTR)))		__nfs_revalidate_inode(NFS_SERVER(inode), inode);	delegation = nfs_alloc_delegation();	if (delegation == NULL)		return -ENOMEM;	memcpy(delegation->stateid.data, res->delegation.data,			sizeof(delegation->stateid.data));	delegation->type = res->delegation_type;	delegation->maxsize = res->maxsize;	delegation->cred = get_rpccred(cred);	delegation->inode = inode;	spin_lock(&clp->cl_lock);	if (nfsi->delegation == NULL) {		list_add(&delegation->super_list, &clp->cl_delegations);		nfsi->delegation = delegation;		nfsi->delegation_state = delegation->type;		delegation = NULL;	} else {		if (memcmp(&delegation->stateid, &nfsi->delegation->stateid,					sizeof(delegation->stateid)) != 0 ||				delegation->type != nfsi->delegation->type) {			printk("%s: server %u.%u.%u.%u, handed out a duplicate delegation!\n",					__FUNCTION__, NIPQUAD(clp->cl_addr));			status = -EIO;		}	}	spin_unlock(&clp->cl_lock);	if (delegation != NULL)		kfree(delegation);	return status;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f99d49adf527fa6f7a9c42257fa76bca6b8df1e3/delegation.c/clean/fs/nfs/delegation.c