sk = inet_lookup(&tcp_hashinfo, req->id.tcpdiag_dst[0], 
sk = inet_lookup(hashinfo, req->id.tcpdiag_dst[0], 
static int tcpdiag_get_exact(struct sk_buff *in_skb, const struct nlmsghdr *nlh){	int err;	struct sock *sk;	struct tcpdiagreq *req = NLMSG_DATA(nlh);	struct sk_buff *rep;	if (req->tcpdiag_family == AF_INET) {		sk = inet_lookup(&tcp_hashinfo, req->id.tcpdiag_dst[0],				 req->id.tcpdiag_dport, req->id.tcpdiag_src[0],				 req->id.tcpdiag_sport, req->id.tcpdiag_if);	}#ifdef CONFIG_IP_TCPDIAG_IPV6	else if (req->tcpdiag_family == AF_INET6) {		sk = tcp_v6_lookup((struct in6_addr*)req->id.tcpdiag_dst, req->id.tcpdiag_dport,				   (struct in6_addr*)req->id.tcpdiag_src, req->id.tcpdiag_sport,				   req->id.tcpdiag_if);	}#endif	else {		return -EINVAL;	}	if (sk == NULL)		return -ENOENT;	err = -ESTALE;	if ((req->id.tcpdiag_cookie[0] != TCPDIAG_NOCOOKIE ||	     req->id.tcpdiag_cookie[1] != TCPDIAG_NOCOOKIE) &&	    ((u32)(unsigned long)sk != req->id.tcpdiag_cookie[0] ||	     (u32)((((unsigned long)sk) >> 31) >> 1) != req->id.tcpdiag_cookie[1]))		goto out;	err = -ENOMEM;	rep = alloc_skb(NLMSG_SPACE(sizeof(struct tcpdiagmsg)+				    sizeof(struct tcpdiag_meminfo)+				    sizeof(struct tcp_info)+64), GFP_KERNEL);	if (!rep)		goto out;	if (tcpdiag_fill(rep, sk, req->tcpdiag_ext,			 NETLINK_CB(in_skb).pid,			 nlh->nlmsg_seq, 0) <= 0)		BUG();	err = netlink_unicast(tcpnl, rep, NETLINK_CB(in_skb).pid, MSG_DONTWAIT);	if (err > 0)		err = 0;out:	if (sk) {		if (sk->sk_state == TCP_TIME_WAIT)			inet_twsk_put((struct inet_timewait_sock *)sk);		else			sock_put(sk);	}	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/540722ffc3a0d7e11d97a13e1ce6f3bc23b061c1/tcp_diag.c/buggy/net/ipv4/tcp_diag.c