sock_kfree_s(sk, p, tot_len); 
sock_kfree_s(sk, opt2, opt2->tot_len); 
ipv6_renew_options(struct sock *sk, struct ipv6_txoptions *opt,		   int newtype,		   struct ipv6_opt_hdr __user *newopt, int newoptlen){	int tot_len = 0;	char *p;	struct ipv6_txoptions *opt2;	int err;	if (newtype != IPV6_HOPOPTS && opt->hopopt)		tot_len += CMSG_ALIGN(ipv6_optlen(opt->hopopt));	if (newtype != IPV6_RTHDRDSTOPTS && opt->dst0opt)		tot_len += CMSG_ALIGN(ipv6_optlen(opt->dst0opt));	if (newtype != IPV6_RTHDR && opt->srcrt)		tot_len += CMSG_ALIGN(ipv6_optlen(opt->srcrt));	if (newtype != IPV6_DSTOPTS && opt->dst1opt)		tot_len += CMSG_ALIGN(ipv6_optlen(opt->dst1opt));	if (newopt && newoptlen)		tot_len += CMSG_ALIGN(newoptlen);	if (!tot_len)		return NULL;	opt2 = sock_kmalloc(sk, tot_len, GFP_ATOMIC);	if (!opt2)		return ERR_PTR(-ENOBUFS);	memset(opt2, 0, tot_len);	opt2->tot_len = tot_len;	p = (char *)(opt2 + 1);	err = ipv6_renew_option(opt->hopopt, newopt, newoptlen,				newtype != IPV6_HOPOPTS,				&opt2->hopopt, &p);	if (err)		goto out;	err = ipv6_renew_option(opt->dst0opt, newopt, newoptlen,				newtype != IPV6_RTHDRDSTOPTS,				&opt2->dst0opt, &p);	if (err)		goto out;	err = ipv6_renew_option(opt->srcrt, newopt, newoptlen,				newtype != IPV6_RTHDR,				(struct ipv6_opt_hdr **)opt2->srcrt, &p);	if (err)		goto out;	err = ipv6_renew_option(opt->dst1opt, newopt, newoptlen,				newtype != IPV6_DSTOPTS,				&opt2->dst1opt, &p);	if (err)		goto out;	opt2->opt_nflen = (opt2->hopopt ? ipv6_optlen(opt2->hopopt) : 0) +			  (opt2->dst0opt ? ipv6_optlen(opt2->dst0opt) : 0) +			  (opt2->srcrt ? ipv6_optlen(opt2->srcrt) : 0);	opt2->opt_flen = (opt2->dst1opt ? ipv6_optlen(opt2->dst1opt) : 0);	return opt2;out:	sock_kfree_s(sk, p, tot_len);	return ERR_PTR(err);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8b8aa4b5a66ecf90f0a7033c8cbc49cfd97c4347/exthdrs.c/clean/net/ipv6/exthdrs.c