diff options
| -rw-r--r-- | include/linux/xfrm.h | 1 | ||||
| -rw-r--r-- | net/xfrm/xfrm_user.c | 3 | 
2 files changed, 2 insertions, 2 deletions
| diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h index 2ca6bae88721..fb0c215a3051 100644 --- a/include/linux/xfrm.h +++ b/include/linux/xfrm.h @@ -339,6 +339,7 @@ struct xfrm_usersa_info {  #define XFRM_STATE_NOPMTUDISC	4  #define XFRM_STATE_WILDRECV	8  #define XFRM_STATE_ICMP		16 +#define XFRM_STATE_AF_UNSPEC	32  };  struct xfrm_usersa_id { diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index b976d9ed10e4..04c41504f84c 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c @@ -277,9 +277,8 @@ static void copy_from_user_state(struct xfrm_state *x, struct xfrm_usersa_info *  	memcpy(&x->props.saddr, &p->saddr, sizeof(x->props.saddr));  	x->props.flags = p->flags; -	if (!x->sel.family) +	if (!x->sel.family && !(p->flags & XFRM_STATE_AF_UNSPEC))  		x->sel.family = p->family; -  }  /* | 
