struct netpoll *np = skb->dev->npinfo->np; 
struct netpoll *np = skb->dev->npinfo->rx_np; 
int __netpoll_rx(struct sk_buff *skb){	int proto, len, ulen;	struct iphdr *iph;	struct udphdr *uh;	struct netpoll *np = skb->dev->npinfo->np;	if (!np->rx_hook)		goto out;	if (skb->dev->type != ARPHRD_ETHER)		goto out;	/* check if netpoll clients need ARP */	if (skb->protocol == __constant_htons(ETH_P_ARP) &&	    atomic_read(&trapped)) {		arp_reply(skb);		return 1;	}	proto = ntohs(eth_hdr(skb)->h_proto);	if (proto != ETH_P_IP)		goto out;	if (skb->pkt_type == PACKET_OTHERHOST)		goto out;	if (skb_shared(skb))		goto out;	iph = (struct iphdr *)skb->data;	if (!pskb_may_pull(skb, sizeof(struct iphdr)))		goto out;	if (iph->ihl < 5 || iph->version != 4)		goto out;	if (!pskb_may_pull(skb, iph->ihl*4))		goto out;	if (ip_fast_csum((u8 *)iph, iph->ihl) != 0)		goto out;	len = ntohs(iph->tot_len);	if (skb->len < len || len < iph->ihl*4)		goto out;	if (iph->protocol != IPPROTO_UDP)		goto out;	len -= iph->ihl*4;	uh = (struct udphdr *)(((char *)iph) + iph->ihl*4);	ulen = ntohs(uh->len);	if (ulen != len)		goto out;	if (checksum_udp(skb, uh, ulen, iph->saddr, iph->daddr) < 0)		goto out;	if (np->local_ip && np->local_ip != ntohl(iph->daddr))		goto out;	if (np->remote_ip && np->remote_ip != ntohl(iph->saddr))		goto out;	if (np->local_port && np->local_port != ntohs(uh->dest))		goto out;	np->rx_hook(np, ntohs(uh->source),		    (char *)(uh+1),		    ulen - sizeof(struct udphdr));	kfree_skb(skb);	return 1;out:	if (atomic_read(&trapped)) {		kfree_skb(skb);		return 1;	}	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/fbeec2e1552949002065435c9829dc244ad85407/netpoll.c/buggy/net/core/netpoll.c