Thread (7 messages) 7 messages, 3 authors, 2021-12-20

Re: [PATCH 1/2] xfrm: interface with if_id 0 should return error

flat view

From: Eyal Birger <hidden>
Date: 2021-12-10 17:22:50

On Thu, Dec 9, 2021 at 5:36 PM Antony Antony [off-list ref] wrote:
quoted hunk ↗ jump to hunk
xfrm interface if_id = 0 would cause xfrm policy lookup errors since
commit 9f8550e4bd9d ("xfrm: fix disable_xfrm sysctl when used on xfrm interfaces")

Now 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.

Signed-off-by: Antony Antony <redacted>
---
 net/xfrm/xfrm_interface.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/net/xfrm/xfrm_interface.c b/net/xfrm/xfrm_interface.c
index 41de46b5ffa9..57448fc519fc 100644
--- a/net/xfrm/xfrm_interface.c
+++ b/net/xfrm/xfrm_interface.c
@@ -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;
@@ -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);
Looks good. Maybe this needs a "Fixes:" tag?

Reviewed-by: Eyal Birger <redacted>

Thanks,
Eyal.
--
2.30.2
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help