static int xfrm_add_sa(struct sk_buff *skb, struct nlmsghdr *nlh, void **xfrma){	struct xfrm_usersa_info *p = NLMSG_DATA(nlh);	struct xfrm_state *x;	int err;	struct km_event c;	err = verify_newsa_info(p, (struct rtattr **) xfrma);	if (err)		return err;	x = xfrm_state_construct(p, (struct rtattr **) xfrma, &err);	if (!x)		return err;	xfrm_state_hold(x);	if (nlh->nlmsg_type == XFRM_MSG_NEWSA)		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;	}	c.seq = nlh->nlmsg_seq;	c.pid = nlh->nlmsg_pid;	c.event = nlh->nlmsg_type;	km_state_notify(x, &c);	xfrm_state_put(x);	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/7d6dfe1f5bc4c56e0c31173014a099ec3fa35907/xfrm_user.c/clean/net/xfrm/xfrm_user.c