Merge branch 'ieee802154-for-davem-2019-08-24' of git://git.kernel.org/pub/scm/linux...
[linux-2.6-microblaze.git] / drivers / net / ieee802154 / mac802154_hwsim.c
index 3d9ffd2..c20e7ef 100644 (file)
@@ -1,18 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0-only
 /*
  * HWSIM IEEE 802.15.4 interface
  *
  * (C) 2018 Mojatau, Alexander Aring <aring@mojatau.com>
  * Copyright 2007-2012 Siemens AG
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
  * Based on fakelb, original Written by:
  * Sergey Lapin <slapin@ossfans.org>
  * Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
@@ -227,14 +219,16 @@ static int append_radio_msg(struct sk_buff *skb, struct hwsim_phy *phy)
                return 0;
        }
 
-       nl_edges = nla_nest_start(skb, MAC802154_HWSIM_ATTR_RADIO_EDGES);
+       nl_edges = nla_nest_start_noflag(skb,
+                                        MAC802154_HWSIM_ATTR_RADIO_EDGES);
        if (!nl_edges) {
                rcu_read_unlock();
                return -ENOBUFS;
        }
 
        list_for_each_entry_rcu(e, &phy->edges, list) {
-               nl_edge = nla_nest_start(skb, MAC802154_HWSIM_ATTR_RADIO_EDGE);
+               nl_edge = nla_nest_start_noflag(skb,
+                                               MAC802154_HWSIM_ATTR_RADIO_EDGE);
                if (!nl_edge) {
                        rcu_read_unlock();
                        nla_nest_cancel(skb, nl_edges);
@@ -428,9 +422,7 @@ static int hwsim_new_edge_nl(struct sk_buff *msg, struct genl_info *info)
            !info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE])
                return -EINVAL;
 
-       if (nla_parse_nested(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX,
-                            info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE],
-                            hwsim_edge_policy, NULL))
+       if (nla_parse_nested_deprecated(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX, info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE], hwsim_edge_policy, NULL))
                return -EINVAL;
 
        if (!edge_attrs[MAC802154_HWSIM_EDGE_ATTR_ENDPOINT_ID])
@@ -492,9 +484,7 @@ static int hwsim_del_edge_nl(struct sk_buff *msg, struct genl_info *info)
            !info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE])
                return -EINVAL;
 
-       if (nla_parse_nested(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX,
-                            info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE],
-                            hwsim_edge_policy, NULL))
+       if (nla_parse_nested_deprecated(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX, info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE], hwsim_edge_policy, NULL))
                return -EINVAL;
 
        if (!edge_attrs[MAC802154_HWSIM_EDGE_ATTR_ENDPOINT_ID])
@@ -542,9 +532,7 @@ static int hwsim_set_edge_lqi(struct sk_buff *msg, struct genl_info *info)
            !info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE])
                return -EINVAL;
 
-       if (nla_parse_nested(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX,
-                            info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE],
-                            hwsim_edge_policy, NULL))
+       if (nla_parse_nested_deprecated(edge_attrs, MAC802154_HWSIM_EDGE_ATTR_MAX, info->attrs[MAC802154_HWSIM_ATTR_RADIO_EDGE], hwsim_edge_policy, NULL))
                return -EINVAL;
 
        if (!edge_attrs[MAC802154_HWSIM_EDGE_ATTR_ENDPOINT_ID] &&
@@ -598,37 +586,37 @@ static const struct nla_policy hwsim_genl_policy[MAC802154_HWSIM_ATTR_MAX + 1] =
 static const struct genl_ops hwsim_nl_ops[] = {
        {
                .cmd = MAC802154_HWSIM_CMD_NEW_RADIO,
-               .policy = hwsim_genl_policy,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = hwsim_new_radio_nl,
                .flags = GENL_UNS_ADMIN_PERM,
        },
        {
                .cmd = MAC802154_HWSIM_CMD_DEL_RADIO,
-               .policy = hwsim_genl_policy,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = hwsim_del_radio_nl,
                .flags = GENL_UNS_ADMIN_PERM,
        },
        {
                .cmd = MAC802154_HWSIM_CMD_GET_RADIO,
-               .policy = hwsim_genl_policy,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = hwsim_get_radio_nl,
                .dumpit = hwsim_dump_radio_nl,
        },
        {
                .cmd = MAC802154_HWSIM_CMD_NEW_EDGE,
-               .policy = hwsim_genl_policy,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = hwsim_new_edge_nl,
                .flags = GENL_UNS_ADMIN_PERM,
        },
        {
                .cmd = MAC802154_HWSIM_CMD_DEL_EDGE,
-               .policy = hwsim_genl_policy,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = hwsim_del_edge_nl,
                .flags = GENL_UNS_ADMIN_PERM,
        },
        {
                .cmd = MAC802154_HWSIM_CMD_SET_EDGE,
-               .policy = hwsim_genl_policy,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = hwsim_set_edge_lqi,
                .flags = GENL_UNS_ADMIN_PERM,
        },
@@ -638,6 +626,7 @@ static struct genl_family hwsim_genl_family __ro_after_init = {
        .name = "MAC802154_HWSIM",
        .version = 1,
        .maxattr = MAC802154_HWSIM_ATTR_MAX,
+       .policy = hwsim_genl_policy,
        .module = THIS_MODULE,
        .ops = hwsim_nl_ops,
        .n_ops = ARRAY_SIZE(hwsim_nl_ops),