NETDEBUG(if (net_ratelimit()) printk(KERN_DEBUG "udp cork app bug 3\n")); 
LIMIT_NETDEBUG(printk(KERN_DEBUG "udp cork app bug 3\n")); 
static int udp_sendpage(struct sock *sk, struct page *page, int offset,			size_t size, int flags){	struct udp_sock *up = udp_sk(sk);	int ret;	if (!up->pending) {		struct msghdr msg = {	.msg_flags = flags|MSG_MORE };		/* Call udp_sendmsg to specify destination address which		 * sendpage interface can't pass.		 * This will succeed only when the socket is connected.		 */		ret = udp_sendmsg(NULL, sk, &msg, 0);		if (ret < 0)			return ret;	}	lock_sock(sk);	if (unlikely(!up->pending)) {		release_sock(sk);		NETDEBUG(if (net_ratelimit()) printk(KERN_DEBUG "udp cork app bug 3\n"));		return -EINVAL;	}	ret = ip_append_page(sk, page, offset, size, flags);	if (ret == -EOPNOTSUPP) {		release_sock(sk);		return sock_no_sendpage(sk->sk_socket, page, offset,					size, flags);	}	if (ret < 0) {		udp_flush_pending_frames(sk);		goto out;	}	up->len += size;	if (!(up->corkflag || (flags&MSG_MORE)))		ret = udp_push_pending_frames(sk, up);	if (!ret)		ret = size;out:	release_sock(sk);	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/ca9334523c853e407da7b3a0bd02f54d0fa59414/udp.c/clean/net/ipv4/udp.c