]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/net/macsec.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[linux.git] / drivers / net / macsec.c
index 64a982563d59171e9220243a5d5eac9bed286529..009b2902c9d349b03995c7826734bd1b15e2704d 100644 (file)
@@ -1611,9 +1611,7 @@ static int parse_sa_config(struct nlattr **attrs, struct nlattr **tb_sa)
        if (!attrs[MACSEC_ATTR_SA_CONFIG])
                return -EINVAL;
 
-       if (nla_parse_nested(tb_sa, MACSEC_SA_ATTR_MAX,
-                            attrs[MACSEC_ATTR_SA_CONFIG],
-                            macsec_genl_sa_policy, NULL))
+       if (nla_parse_nested_deprecated(tb_sa, MACSEC_SA_ATTR_MAX, attrs[MACSEC_ATTR_SA_CONFIG], macsec_genl_sa_policy, NULL))
                return -EINVAL;
 
        return 0;
@@ -1624,9 +1622,7 @@ static int parse_rxsc_config(struct nlattr **attrs, struct nlattr **tb_rxsc)
        if (!attrs[MACSEC_ATTR_RXSC_CONFIG])
                return -EINVAL;
 
-       if (nla_parse_nested(tb_rxsc, MACSEC_RXSC_ATTR_MAX,
-                            attrs[MACSEC_ATTR_RXSC_CONFIG],
-                            macsec_genl_rxsc_policy, NULL))
+       if (nla_parse_nested_deprecated(tb_rxsc, MACSEC_RXSC_ATTR_MAX, attrs[MACSEC_ATTR_RXSC_CONFIG], macsec_genl_rxsc_policy, NULL))
                return -EINVAL;
 
        return 0;
@@ -2175,8 +2171,9 @@ static int copy_tx_sa_stats(struct sk_buff *skb,
        return 0;
 }
 
-static int copy_rx_sa_stats(struct sk_buff *skb,
-                           struct macsec_rx_sa_stats __percpu *pstats)
+static noinline_for_stack int
+copy_rx_sa_stats(struct sk_buff *skb,
+                struct macsec_rx_sa_stats __percpu *pstats)
 {
        struct macsec_rx_sa_stats sum = {0, };
        int cpu;
@@ -2201,8 +2198,8 @@ static int copy_rx_sa_stats(struct sk_buff *skb,
        return 0;
 }
 
-static int copy_rx_sc_stats(struct sk_buff *skb,
-                           struct pcpu_rx_sc_stats __percpu *pstats)
+static noinline_for_stack int
+copy_rx_sc_stats(struct sk_buff *skb, struct pcpu_rx_sc_stats __percpu *pstats)
 {
        struct macsec_rx_sc_stats sum = {0, };
        int cpu;
@@ -2265,8 +2262,8 @@ static int copy_rx_sc_stats(struct sk_buff *skb,
        return 0;
 }
 
-static int copy_tx_sc_stats(struct sk_buff *skb,
-                           struct pcpu_tx_sc_stats __percpu *pstats)
+static noinline_for_stack int
+copy_tx_sc_stats(struct sk_buff *skb, struct pcpu_tx_sc_stats __percpu *pstats)
 {
        struct macsec_tx_sc_stats sum = {0, };
        int cpu;
@@ -2305,8 +2302,8 @@ static int copy_tx_sc_stats(struct sk_buff *skb,
        return 0;
 }
 
-static int copy_secy_stats(struct sk_buff *skb,
-                          struct pcpu_secy_stats __percpu *pstats)
+static noinline_for_stack int
+copy_secy_stats(struct sk_buff *skb, struct pcpu_secy_stats __percpu *pstats)
 {
        struct macsec_dev_stats sum = {0, };
        int cpu;
@@ -2364,7 +2361,8 @@ static int copy_secy_stats(struct sk_buff *skb,
 static int nla_put_secy(struct macsec_secy *secy, struct sk_buff *skb)
 {
        struct macsec_tx_sc *tx_sc = &secy->tx_sc;
-       struct nlattr *secy_nest = nla_nest_start(skb, MACSEC_ATTR_SECY);
+       struct nlattr *secy_nest = nla_nest_start_noflag(skb,
+                                                        MACSEC_ATTR_SECY);
        u64 csid;
 
        if (!secy_nest)
@@ -2410,8 +2408,9 @@ static int nla_put_secy(struct macsec_secy *secy, struct sk_buff *skb)
        return 1;
 }
 
-static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
-                    struct sk_buff *skb, struct netlink_callback *cb)
+static noinline_for_stack int
+dump_secy(struct macsec_secy *secy, struct net_device *dev,
+         struct sk_buff *skb, struct netlink_callback *cb)
 {
        struct macsec_rx_sc *rx_sc;
        struct macsec_tx_sc *tx_sc = &secy->tx_sc;
@@ -2433,7 +2432,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
        if (nla_put_secy(secy, skb))
                goto nla_put_failure;
 
-       attr = nla_nest_start(skb, MACSEC_ATTR_TXSC_STATS);
+       attr = nla_nest_start_noflag(skb, MACSEC_ATTR_TXSC_STATS);
        if (!attr)
                goto nla_put_failure;
        if (copy_tx_sc_stats(skb, tx_sc->stats)) {
@@ -2442,7 +2441,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
        }
        nla_nest_end(skb, attr);
 
-       attr = nla_nest_start(skb, MACSEC_ATTR_SECY_STATS);
+       attr = nla_nest_start_noflag(skb, MACSEC_ATTR_SECY_STATS);
        if (!attr)
                goto nla_put_failure;
        if (copy_secy_stats(skb, macsec_priv(dev)->stats)) {
@@ -2451,7 +2450,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
        }
        nla_nest_end(skb, attr);
 
-       txsa_list = nla_nest_start(skb, MACSEC_ATTR_TXSA_LIST);
+       txsa_list = nla_nest_start_noflag(skb, MACSEC_ATTR_TXSA_LIST);
        if (!txsa_list)
                goto nla_put_failure;
        for (i = 0, j = 1; i < MACSEC_NUM_AN; i++) {
@@ -2461,7 +2460,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
                if (!tx_sa)
                        continue;
 
-               txsa_nest = nla_nest_start(skb, j++);
+               txsa_nest = nla_nest_start_noflag(skb, j++);
                if (!txsa_nest) {
                        nla_nest_cancel(skb, txsa_list);
                        goto nla_put_failure;
@@ -2476,7 +2475,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
                        goto nla_put_failure;
                }
 
-               attr = nla_nest_start(skb, MACSEC_SA_ATTR_STATS);
+               attr = nla_nest_start_noflag(skb, MACSEC_SA_ATTR_STATS);
                if (!attr) {
                        nla_nest_cancel(skb, txsa_nest);
                        nla_nest_cancel(skb, txsa_list);
@@ -2494,7 +2493,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
        }
        nla_nest_end(skb, txsa_list);
 
-       rxsc_list = nla_nest_start(skb, MACSEC_ATTR_RXSC_LIST);
+       rxsc_list = nla_nest_start_noflag(skb, MACSEC_ATTR_RXSC_LIST);
        if (!rxsc_list)
                goto nla_put_failure;
 
@@ -2502,7 +2501,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
        for_each_rxsc_rtnl(secy, rx_sc) {
                int k;
                struct nlattr *rxsa_list;
-               struct nlattr *rxsc_nest = nla_nest_start(skb, j++);
+               struct nlattr *rxsc_nest = nla_nest_start_noflag(skb, j++);
 
                if (!rxsc_nest) {
                        nla_nest_cancel(skb, rxsc_list);
@@ -2517,7 +2516,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
                        goto nla_put_failure;
                }
 
-               attr = nla_nest_start(skb, MACSEC_RXSC_ATTR_STATS);
+               attr = nla_nest_start_noflag(skb, MACSEC_RXSC_ATTR_STATS);
                if (!attr) {
                        nla_nest_cancel(skb, rxsc_nest);
                        nla_nest_cancel(skb, rxsc_list);
@@ -2531,7 +2530,8 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
                }
                nla_nest_end(skb, attr);
 
-               rxsa_list = nla_nest_start(skb, MACSEC_RXSC_ATTR_SA_LIST);
+               rxsa_list = nla_nest_start_noflag(skb,
+                                                 MACSEC_RXSC_ATTR_SA_LIST);
                if (!rxsa_list) {
                        nla_nest_cancel(skb, rxsc_nest);
                        nla_nest_cancel(skb, rxsc_list);
@@ -2545,7 +2545,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
                        if (!rx_sa)
                                continue;
 
-                       rxsa_nest = nla_nest_start(skb, k++);
+                       rxsa_nest = nla_nest_start_noflag(skb, k++);
                        if (!rxsa_nest) {
                                nla_nest_cancel(skb, rxsa_list);
                                nla_nest_cancel(skb, rxsc_nest);
@@ -2553,7 +2553,8 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
                                goto nla_put_failure;
                        }
 
-                       attr = nla_nest_start(skb, MACSEC_SA_ATTR_STATS);
+                       attr = nla_nest_start_noflag(skb,
+                                                    MACSEC_SA_ATTR_STATS);
                        if (!attr) {
                                nla_nest_cancel(skb, rxsa_list);
                                nla_nest_cancel(skb, rxsc_nest);
@@ -2636,61 +2637,61 @@ static int macsec_dump_txsc(struct sk_buff *skb, struct netlink_callback *cb)
 static const struct genl_ops macsec_genl_ops[] = {
        {
                .cmd = MACSEC_CMD_GET_TXSC,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .dumpit = macsec_dump_txsc,
-               .policy = macsec_genl_policy,
        },
        {
                .cmd = MACSEC_CMD_ADD_RXSC,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = macsec_add_rxsc,
-               .policy = macsec_genl_policy,
                .flags = GENL_ADMIN_PERM,
        },
        {
                .cmd = MACSEC_CMD_DEL_RXSC,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = macsec_del_rxsc,
-               .policy = macsec_genl_policy,
                .flags = GENL_ADMIN_PERM,
        },
        {
                .cmd = MACSEC_CMD_UPD_RXSC,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = macsec_upd_rxsc,
-               .policy = macsec_genl_policy,
                .flags = GENL_ADMIN_PERM,
        },
        {
                .cmd = MACSEC_CMD_ADD_TXSA,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = macsec_add_txsa,
-               .policy = macsec_genl_policy,
                .flags = GENL_ADMIN_PERM,
        },
        {
                .cmd = MACSEC_CMD_DEL_TXSA,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = macsec_del_txsa,
-               .policy = macsec_genl_policy,
                .flags = GENL_ADMIN_PERM,
        },
        {
                .cmd = MACSEC_CMD_UPD_TXSA,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = macsec_upd_txsa,
-               .policy = macsec_genl_policy,
                .flags = GENL_ADMIN_PERM,
        },
        {
                .cmd = MACSEC_CMD_ADD_RXSA,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = macsec_add_rxsa,
-               .policy = macsec_genl_policy,
                .flags = GENL_ADMIN_PERM,
        },
        {
                .cmd = MACSEC_CMD_DEL_RXSA,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = macsec_del_rxsa,
-               .policy = macsec_genl_policy,
                .flags = GENL_ADMIN_PERM,
        },
        {
                .cmd = MACSEC_CMD_UPD_RXSA,
+               .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
                .doit = macsec_upd_rxsa,
-               .policy = macsec_genl_policy,
                .flags = GENL_ADMIN_PERM,
        },
 };
@@ -2700,6 +2701,7 @@ static struct genl_family macsec_fam __ro_after_init = {
        .hdrsize        = 0,
        .version        = MACSEC_GENL_VERSION,
        .maxattr        = MACSEC_ATTR_MAX,
+       .policy = macsec_genl_policy,
        .netnsok        = true,
        .module         = THIS_MODULE,
        .ops            = macsec_genl_ops,