Skip to content

Commit

Permalink
xfrm: interface with if_id 0 should return error
Browse files Browse the repository at this point in the history
xfrm interface if_id = 0 would cause xfrm policy lookup errors since
Commit 9f8550e.

Now explicitly fail to create an xfrm interface when if_id = 0

With this commit:
 ip link add ipsec0  type xfrm dev lo  if_id 0
 Error: if_id must be non zero.

v1->v2 change:
 - add Fixes: tag

Fixes: 9f8550e ("xfrm: fix disable_xfrm sysctl when used on xfrm interfaces")
Signed-off-by: Antony Antony <antony.antony@secunet.com>
Reviewed-by: Eyal Birger <eyal.birger@gmail.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
  • Loading branch information
Antony Antony authored and Steffen Klassert committed Dec 17, 2021
1 parent 7770a39 commit 8dce439
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions net/xfrm/xfrm_interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -637,11 +637,16 @@ static int xfrmi_newlink(struct net *src_net, struct net_device *dev,
struct netlink_ext_ack *extack)
{
struct net *net = dev_net(dev);
struct xfrm_if_parms p;
struct xfrm_if_parms p = {};
struct xfrm_if *xi;
int err;

xfrmi_netlink_parms(data, &p);
if (!p.if_id) {
NL_SET_ERR_MSG(extack, "if_id must be non zero");
return -EINVAL;
}

xi = xfrmi_locate(net, &p);
if (xi)
return -EEXIST;
Expand All @@ -666,7 +671,12 @@ static int xfrmi_changelink(struct net_device *dev, struct nlattr *tb[],
{
struct xfrm_if *xi = netdev_priv(dev);
struct net *net = xi->net;
struct xfrm_if_parms p;
struct xfrm_if_parms p = {};

if (!p.if_id) {
NL_SET_ERR_MSG(extack, "if_id must be non zero");
return -EINVAL;
}

xfrmi_netlink_parms(data, &p);
xi = xfrmi_locate(net, &p);
Expand Down

0 comments on commit 8dce439

Please sign in to comment.