struct sk_buff *out_skb; struct sadb_msg *out_hdr; 
static int pfkey_add(struct sock *sk, struct sk_buff *skb, struct sadb_msg *hdr, void **ext_hdrs){	struct sk_buff *out_skb;	struct sadb_msg *out_hdr;	struct xfrm_state *x;	int err;	xfrm_probe_algs();		x = pfkey_msg2xfrm_state(hdr, ext_hdrs);	if (IS_ERR(x))		return PTR_ERR(x);	if (hdr->sadb_msg_type == SADB_ADD)		err = xfrm_state_add(x);	else		err = xfrm_state_update(x);	if (err < 0) {		x->km.state = XFRM_STATE_DEAD;		xfrm_state_put(x);		return err;	}	out_skb = pfkey_xfrm_state2msg(x, 0, 3);	if (IS_ERR(out_skb))		return  PTR_ERR(out_skb); /* XXX Should we return 0 here ? */	out_hdr = (struct sadb_msg *) out_skb->data;	out_hdr->sadb_msg_version = hdr->sadb_msg_version;	out_hdr->sadb_msg_type = hdr->sadb_msg_type;	out_hdr->sadb_msg_satype = pfkey_proto2satype(x->id.proto);	out_hdr->sadb_msg_errno = 0;	out_hdr->sadb_msg_reserved = 0;	out_hdr->sadb_msg_seq = hdr->sadb_msg_seq;	out_hdr->sadb_msg_pid = hdr->sadb_msg_pid;	pfkey_broadcast(out_skb, GFP_ATOMIC, BROADCAST_ALL, sk);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/26b15dad9f1c19d6d4f7b999b07eaa6d98e4b375/af_key.c/buggy/net/key/af_key.c