cb->nlh->nlmsg_seq); 
cb->nlh->nlmsg_seq, cb->nlh); 
static int tcpdiag_dump_reqs(struct sk_buff *skb, struct sock *sk,			     struct netlink_callback *cb){	struct tcpdiag_entry entry;	struct tcpdiagreq *r = NLMSG_DATA(cb->nlh);	struct inet_connection_sock *icsk = inet_csk(sk);	struct listen_sock *lopt;	struct rtattr *bc = NULL;	struct inet_sock *inet = inet_sk(sk);	int j, s_j;	int reqnum, s_reqnum;	int err = 0;	s_j = cb->args[3];	s_reqnum = cb->args[4];	if (s_j > 0)		s_j--;	entry.family = sk->sk_family;	read_lock_bh(&icsk->icsk_accept_queue.syn_wait_lock);	lopt = icsk->icsk_accept_queue.listen_opt;	if (!lopt || !lopt->qlen)		goto out;	if (cb->nlh->nlmsg_len > 4 + NLMSG_SPACE(sizeof(*r))) {		bc = (struct rtattr *)(r + 1);		entry.sport = inet->num;		entry.userlocks = sk->sk_userlocks;	}	for (j = s_j; j < TCP_SYNQ_HSIZE; j++) {		struct request_sock *req, *head = lopt->syn_table[j];		reqnum = 0;		for (req = head; req; reqnum++, req = req->dl_next) {			struct inet_request_sock *ireq = inet_rsk(req);			if (reqnum < s_reqnum)				continue;			if (r->id.tcpdiag_dport != ireq->rmt_port &&			    r->id.tcpdiag_dport)				continue;			if (bc) {				entry.saddr =#ifdef CONFIG_IP_TCPDIAG_IPV6					(entry.family == AF_INET6) ?					tcp6_rsk(req)->loc_addr.s6_addr32 :#endif					&ireq->loc_addr;				entry.daddr = #ifdef CONFIG_IP_TCPDIAG_IPV6					(entry.family == AF_INET6) ?					tcp6_rsk(req)->rmt_addr.s6_addr32 :#endif					&ireq->rmt_addr;				entry.dport = ntohs(ireq->rmt_port);				if (!tcpdiag_bc_run(RTA_DATA(bc),						    RTA_PAYLOAD(bc), &entry))					continue;			}			err = tcpdiag_fill_req(skb, sk, req,					       NETLINK_CB(cb->skb).pid,					       cb->nlh->nlmsg_seq);			if (err < 0) {				cb->args[3] = j + 1;				cb->args[4] = reqnum;				goto out;			}		}		s_reqnum = 0;	}out:	read_unlock_bh(&icsk->icsk_accept_queue.syn_wait_lock);	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/540722ffc3a0d7e11d97a13e1ce6f3bc23b061c1/tcp_diag.c/buggy/net/ipv4/tcp_diag.c