free: if (skb2) kfree_skb(skb2); 
ctnetlink_get_expect(struct sock *ctnl, struct sk_buff *skb, 		     struct nlmsghdr *nlh, struct nfattr *cda[], int *errp){	struct ip_conntrack_tuple tuple;	struct ip_conntrack_expect *exp;	struct sk_buff *skb2;	int err = 0;	DEBUGP("entered %s\n", __FUNCTION__);	if (nlh->nlmsg_flags & NLM_F_DUMP) {		struct nfgenmsg *msg = NLMSG_DATA(nlh);		u32 rlen;		if (msg->nfgen_family != AF_INET)			return -EAFNOSUPPORT;		if ((*errp = netlink_dump_start(ctnl, skb, nlh,		    				ctnetlink_exp_dump_table,						ctnetlink_done)) != 0)			return -EINVAL;		rlen = NLMSG_ALIGN(nlh->nlmsg_len);		if (rlen > skb->len)			rlen = skb->len;		skb_pull(skb, rlen);		return 0;	}	if (cda[CTA_EXPECT_MASTER-1])		err = ctnetlink_parse_tuple(cda, &tuple, CTA_EXPECT_MASTER);	else		return -EINVAL;	if (err < 0)		return err;	exp = ip_conntrack_expect_find(&tuple);	if (!exp)		return -ENOENT;	err = -ENOMEM;	skb2 = alloc_skb(NLMSG_GOODSIZE, GFP_KERNEL);	if (!skb2)		goto out;	NETLINK_CB(skb2).dst_pid = NETLINK_CB(skb).pid;		err = ctnetlink_exp_fill_info(skb2, NETLINK_CB(skb).pid, 				      nlh->nlmsg_seq, IPCTNL_MSG_EXP_NEW,				      1, exp);	if (err <= 0)		goto out;	ip_conntrack_expect_put(exp);	err = netlink_unicast(ctnl, skb2, NETLINK_CB(skb).pid, MSG_DONTWAIT);	if (err < 0)		goto free;	return err;out:	ip_conntrack_expect_put(exp);free:	if (skb2)		kfree_skb(skb2);	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0f81eb4db4f1cc560318b6e7762a7a1d7d8c7095/ip_conntrack_netlink.c/buggy/net/ipv4/netfilter/ip_conntrack_netlink.c