dprintk("RPC: %4d received reply\n", task->tk_pid);  
static void xs_udp_data_ready(struct sock *sk, int len){	struct rpc_task *task;	struct rpc_xprt *xprt;	struct rpc_rqst *rovr;	struct sk_buff *skb;	int err, repsize, copied;	u32 _xid, *xp;	read_lock(&sk->sk_callback_lock);	dprintk("RPC:      xs_udp_data_ready...\n");	if (!(xprt = xprt_from_sock(sk)))		goto out;	if ((skb = skb_recv_datagram(sk, 0, 1, &err)) == NULL)		goto out;	if (xprt->shutdown)		goto dropit;	repsize = skb->len - sizeof(struct udphdr);	if (repsize < 4) {		dprintk("RPC:      impossible RPC reply size %d!\n", repsize);		goto dropit;	}	/* Copy the XID from the skb... */	xp = skb_header_pointer(skb, sizeof(struct udphdr),				sizeof(_xid), &_xid);	if (xp == NULL)		goto dropit;	/* Look up and lock the request corresponding to the given XID */	spin_lock(&xprt->transport_lock);	rovr = xprt_lookup_rqst(xprt, *xp);	if (!rovr)		goto out_unlock;	task = rovr->rq_task;	dprintk("RPC: %4d received reply\n", task->tk_pid);	if ((copied = rovr->rq_private_buf.buflen) > repsize)		copied = repsize;	/* Suck it into the iovec, verify checksum if not done by hw. */	if (csum_partial_copy_to_xdr(&rovr->rq_private_buf, skb))		goto out_unlock;	/* Something worked... */	dst_confirm(skb->dst);	xprt_complete_rqst(xprt, rovr, copied); out_unlock:	spin_unlock(&xprt->transport_lock); dropit:	skb_free_datagram(sk, skb); out:	read_unlock(&sk->sk_callback_lock);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/1570c1e41eabf6b7031f3e4322a2cf1cbe319fee/xprtsock.c/clean/net/sunrpc/xprtsock.c