goto out_xprt; 
goto out_err; 
nfsd4_probe_callback(struct nfs4_client *clp){	struct sockaddr_in	addr;	struct nfs4_callback    *cb = &clp->cl_callback;	struct rpc_timeout	timeparms;	struct rpc_xprt *	xprt;	struct rpc_program *	program = &cb->cb_program;	struct rpc_stat *	stat = &cb->cb_stat;	struct rpc_clnt *	clnt;	struct rpc_message msg = {		.rpc_proc       = &nfs4_cb_procedures[NFSPROC4_CLNT_CB_NULL],		.rpc_argp       = clp,	};	char                    hostname[32];	int status;	dprintk("NFSD: probe_callback. cb_parsed %d cb_set %d\n",			cb->cb_parsed, atomic_read(&cb->cb_set));	if (!cb->cb_parsed || atomic_read(&cb->cb_set))		return;	/* Initialize address */	memset(&addr, 0, sizeof(addr));	addr.sin_family = AF_INET;	addr.sin_port = htons(cb->cb_port);	addr.sin_addr.s_addr = htonl(cb->cb_addr);	/* Initialize timeout */	timeparms.to_initval = (NFSD_LEASE_TIME/4) * HZ;	timeparms.to_retries = 0;	timeparms.to_maxval = (NFSD_LEASE_TIME/2) * HZ;	timeparms.to_exponential = 1;	/* Create RPC transport */	xprt = xprt_create_proto(IPPROTO_TCP, &addr, &timeparms);	if (IS_ERR(xprt)) {		dprintk("NFSD: couldn't create callback transport!\n");		goto out_err;	}	/* Initialize rpc_program */	program->name = "nfs4_cb";	program->number = cb->cb_prog;	program->nrvers = sizeof(nfs_cb_version)/sizeof(nfs_cb_version[0]);	program->version = nfs_cb_version;	program->stats = stat;	/* Initialize rpc_stat */	memset(stat, 0, sizeof(struct rpc_stat));	stat->program = program;	/* Create RPC client 	 *	 * XXX AUTH_UNIX only - need AUTH_GSS....	 */	sprintf(hostname, "%u.%u.%u.%u", NIPQUAD(addr.sin_addr.s_addr));	clnt = rpc_create_client(xprt, hostname, program, 1, RPC_AUTH_UNIX);	if (IS_ERR(clnt)) {		dprintk("NFSD: couldn't create callback client\n");		goto out_xprt;	}	clnt->cl_intr = 0;	clnt->cl_softrtry = 1;	clnt->cl_chatty = 1;	/* Kick rpciod, put the call on the wire. */	if (rpciod_up() != 0) {		dprintk("nfsd: couldn't start rpciod for callbacks!\n");		goto out_clnt;	}	/* the task holds a reference to the nfs4_client struct */	cb->cb_client = clnt;	atomic_inc(&clp->cl_count);	msg.rpc_cred = nfsd4_lookupcred(clp,0);	if (IS_ERR(msg.rpc_cred))		goto out_rpciod;	status = rpc_call_async(clnt, &msg, RPC_TASK_ASYNC, nfs4_cb_null, NULL);	put_rpccred(msg.rpc_cred);	if (status != 0) {		dprintk("NFSD: asynchronous NFSPROC4_CB_NULL failed!\n");		goto out_rpciod;	}	return;out_rpciod:	atomic_dec(&clp->cl_count);	rpciod_down();out_clnt:	rpc_shutdown_client(clnt);	goto out_err;out_xprt:	xprt_destroy(xprt);out_err:	dprintk("NFSD: warning: no callback path to client %.*s\n",		(int)clp->cl_name.len, clp->cl_name.data);	cb->cb_client = NULL;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/5b616f5d596c0b056129f8aeafbc08409b3cd050/nfs4callback.c/buggy/fs/nfsd/nfs4callback.c