diff options
Diffstat (limited to 'net/xfrm/xfrm_user.c')
-rw-r--r-- | net/xfrm/xfrm_user.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index 277c1c46fe94..c6d26afcf89d 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c | |||
@@ -1488,10 +1488,15 @@ static int validate_tmpl(int nr, struct xfrm_user_tmpl *ut, u16 family) | |||
1488 | if (!ut[i].family) | 1488 | if (!ut[i].family) |
1489 | ut[i].family = family; | 1489 | ut[i].family = family; |
1490 | 1490 | ||
1491 | if ((ut[i].mode == XFRM_MODE_TRANSPORT) && | 1491 | switch (ut[i].mode) { |
1492 | (ut[i].family != prev_family)) | 1492 | case XFRM_MODE_TUNNEL: |
1493 | return -EINVAL; | 1493 | case XFRM_MODE_BEET: |
1494 | 1494 | break; | |
1495 | default: | ||
1496 | if (ut[i].family != prev_family) | ||
1497 | return -EINVAL; | ||
1498 | break; | ||
1499 | } | ||
1495 | if (ut[i].mode >= XFRM_MODE_MAX) | 1500 | if (ut[i].mode >= XFRM_MODE_MAX) |
1496 | return -EINVAL; | 1501 | return -EINVAL; |
1497 | 1502 | ||