&& del_timer(&exp->timeout)) __ip_ct_expect_unlink_destroy(exp); 
&& del_timer(&exp->timeout)) { ip_ct_unlink_expect(exp); ip_conntrack_expect_put(exp); } 
ctnetlink_del_expect(struct sock *ctnl, struct sk_buff *skb, 		     struct nlmsghdr *nlh, struct nfattr *cda[], int *errp){	struct ip_conntrack_expect *exp, *tmp;	struct ip_conntrack_tuple tuple;	struct ip_conntrack_helper *h;	int err;	if (cda[CTA_EXPECT_TUPLE-1]) {		/* delete a single expect by tuple */		err = ctnetlink_parse_tuple(cda, &tuple, CTA_EXPECT_TUPLE);		if (err < 0)			return err;		/* bump usage count to 2 */		exp = ip_conntrack_expect_find_get(&tuple);		if (!exp)			return -ENOENT;		if (cda[CTA_EXPECT_ID-1]) {			u_int32_t id = 				*(u_int32_t *)NFA_DATA(cda[CTA_EXPECT_ID-1]);			if (exp->id != ntohl(id)) {				ip_conntrack_expect_put(exp);				return -ENOENT;			}		}		/* after list removal, usage count == 1 */		ip_conntrack_unexpect_related(exp);		/* have to put what we 'get' above. 		 * after this line usage count == 0 */		ip_conntrack_expect_put(exp);	} else if (cda[CTA_EXPECT_HELP_NAME-1]) {		char *name = NFA_DATA(cda[CTA_EXPECT_HELP_NAME-1]);		/* delete all expectations for this helper */		write_lock_bh(&ip_conntrack_lock);		h = __ip_conntrack_helper_find_byname(name);		if (!h) {			write_unlock_bh(&ip_conntrack_lock);			return -EINVAL;		}		list_for_each_entry_safe(exp, tmp, &ip_conntrack_expect_list,					 list) {			if (exp->master->helper == h 			    && del_timer(&exp->timeout))				__ip_ct_expect_unlink_destroy(exp);		}		write_unlock(&ip_conntrack_lock);	} else {		/* This basically means we have to flush everything*/		write_lock_bh(&ip_conntrack_lock);		list_for_each_entry_safe(exp, tmp, &ip_conntrack_expect_list,					 list) {			if (del_timer(&exp->timeout))				__ip_ct_expect_unlink_destroy(exp);		}		write_unlock_bh(&ip_conntrack_lock);	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/49719eb355d32fa07793017b4b46b1c02e88b275/ip_conntrack_netlink.c/buggy/net/ipv4/netfilter/ip_conntrack_netlink.c