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;
 {
        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);