]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/xfrm/xfrm_user.c
Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[linux.git] / net / xfrm / xfrm_user.c
index 6916931b1de1ce6ea3f3a419a0e84aa353142eae..b88ba45ff1ace6ff986cf214c9fd8d1b8730261d 100644 (file)
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0-only
 /* xfrm_user.c: User interface to configure xfrm engine.
  *
  * Copyright (C) 2002 David S. Miller (davem@redhat.com)
@@ -150,6 +151,25 @@ static int verify_newsa_info(struct xfrm_usersa_info *p,
 
        err = -EINVAL;
        switch (p->family) {
+       case AF_INET:
+               break;
+
+       case AF_INET6:
+#if IS_ENABLED(CONFIG_IPV6)
+               break;
+#else
+               err = -EAFNOSUPPORT;
+               goto out;
+#endif
+
+       default:
+               goto out;
+       }
+
+       switch (p->sel.family) {
+       case AF_UNSPEC:
+               break;
+
        case AF_INET:
                if (p->sel.prefixlen_d > 32 || p->sel.prefixlen_s > 32)
                        goto out;
@@ -1006,8 +1026,8 @@ static int xfrm_dump_sa(struct sk_buff *skb, struct netlink_callback *cb)
                u8 proto = 0;
                int err;
 
-               err = nlmsg_parse(cb->nlh, 0, attrs, XFRMA_MAX, xfrma_policy,
-                                 cb->extack);
+               err = nlmsg_parse_deprecated(cb->nlh, 0, attrs, XFRMA_MAX,
+                                            xfrma_policy, cb->extack);
                if (err < 0)
                        return err;
 
@@ -2644,9 +2664,9 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh,
                }
        }
 
-       err = nlmsg_parse(nlh, xfrm_msg_min[type], attrs,
-                         link->nla_max ? : XFRMA_MAX,
-                         link->nla_pol ? : xfrma_policy, extack);
+       err = nlmsg_parse_deprecated(nlh, xfrm_msg_min[type], attrs,
+                                    link->nla_max ? : XFRMA_MAX,
+                                    link->nla_pol ? : xfrma_policy, extack);
        if (err < 0)
                return err;