diff options
author | Johannes Berg <johannes.berg@intel.com> | 2019-04-26 08:07:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-04-27 17:07:22 -0400 |
commit | ef6243acb4782df587a4d7d6c310fa5b5d82684b (patch) | |
tree | 81b4175fc03c61adbb8935f5f7b8ce02589c65dd | |
parent | 56738f460841761abc70347c919d5c45f6f05a42 (diff) |
genetlink: optionally validate strictly/dumps
Add options to strictly validate messages and dump messages,
sometimes perhaps validating dump messages non-strictly may
be required, so add an option for that as well.
Since none of this can really be applied to existing commands,
set the options everwhere using the following spatch:
@@
identifier ops;
expression X;
@@
struct genl_ops ops[] = {
...,
{
.cmd = X,
+ .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
...
},
...
};
For new commands one should just not copy the .validate 'opt-out'
flags and thus get strict validation.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
37 files changed, 405 insertions, 3 deletions
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 69dc11f907a3..6c2dd268e603 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c | |||
@@ -2003,18 +2003,22 @@ out: | |||
2003 | static const struct genl_ops nbd_connect_genl_ops[] = { | 2003 | static const struct genl_ops nbd_connect_genl_ops[] = { |
2004 | { | 2004 | { |
2005 | .cmd = NBD_CMD_CONNECT, | 2005 | .cmd = NBD_CMD_CONNECT, |
2006 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2006 | .doit = nbd_genl_connect, | 2007 | .doit = nbd_genl_connect, |
2007 | }, | 2008 | }, |
2008 | { | 2009 | { |
2009 | .cmd = NBD_CMD_DISCONNECT, | 2010 | .cmd = NBD_CMD_DISCONNECT, |
2011 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2010 | .doit = nbd_genl_disconnect, | 2012 | .doit = nbd_genl_disconnect, |
2011 | }, | 2013 | }, |
2012 | { | 2014 | { |
2013 | .cmd = NBD_CMD_RECONFIGURE, | 2015 | .cmd = NBD_CMD_RECONFIGURE, |
2016 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2014 | .doit = nbd_genl_reconfigure, | 2017 | .doit = nbd_genl_reconfigure, |
2015 | }, | 2018 | }, |
2016 | { | 2019 | { |
2017 | .cmd = NBD_CMD_STATUS, | 2020 | .cmd = NBD_CMD_STATUS, |
2021 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2018 | .doit = nbd_genl_status, | 2022 | .doit = nbd_genl_status, |
2019 | }, | 2023 | }, |
2020 | }; | 2024 | }; |
diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c index c06e31747288..eaf4311b4004 100644 --- a/drivers/net/gtp.c +++ b/drivers/net/gtp.c | |||
@@ -1270,16 +1270,19 @@ static const struct nla_policy gtp_genl_policy[GTPA_MAX + 1] = { | |||
1270 | static const struct genl_ops gtp_genl_ops[] = { | 1270 | static const struct genl_ops gtp_genl_ops[] = { |
1271 | { | 1271 | { |
1272 | .cmd = GTP_CMD_NEWPDP, | 1272 | .cmd = GTP_CMD_NEWPDP, |
1273 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1273 | .doit = gtp_genl_new_pdp, | 1274 | .doit = gtp_genl_new_pdp, |
1274 | .flags = GENL_ADMIN_PERM, | 1275 | .flags = GENL_ADMIN_PERM, |
1275 | }, | 1276 | }, |
1276 | { | 1277 | { |
1277 | .cmd = GTP_CMD_DELPDP, | 1278 | .cmd = GTP_CMD_DELPDP, |
1279 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1278 | .doit = gtp_genl_del_pdp, | 1280 | .doit = gtp_genl_del_pdp, |
1279 | .flags = GENL_ADMIN_PERM, | 1281 | .flags = GENL_ADMIN_PERM, |
1280 | }, | 1282 | }, |
1281 | { | 1283 | { |
1282 | .cmd = GTP_CMD_GETPDP, | 1284 | .cmd = GTP_CMD_GETPDP, |
1285 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1283 | .doit = gtp_genl_get_pdp, | 1286 | .doit = gtp_genl_get_pdp, |
1284 | .dumpit = gtp_genl_dump_pdp, | 1287 | .dumpit = gtp_genl_dump_pdp, |
1285 | .flags = GENL_ADMIN_PERM, | 1288 | .flags = GENL_ADMIN_PERM, |
diff --git a/drivers/net/ieee802154/mac802154_hwsim.c b/drivers/net/ieee802154/mac802154_hwsim.c index 486a3a3bf35b..b187ae1a6bd6 100644 --- a/drivers/net/ieee802154/mac802154_hwsim.c +++ b/drivers/net/ieee802154/mac802154_hwsim.c | |||
@@ -594,31 +594,37 @@ static const struct nla_policy hwsim_genl_policy[MAC802154_HWSIM_ATTR_MAX + 1] = | |||
594 | static const struct genl_ops hwsim_nl_ops[] = { | 594 | static const struct genl_ops hwsim_nl_ops[] = { |
595 | { | 595 | { |
596 | .cmd = MAC802154_HWSIM_CMD_NEW_RADIO, | 596 | .cmd = MAC802154_HWSIM_CMD_NEW_RADIO, |
597 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
597 | .doit = hwsim_new_radio_nl, | 598 | .doit = hwsim_new_radio_nl, |
598 | .flags = GENL_UNS_ADMIN_PERM, | 599 | .flags = GENL_UNS_ADMIN_PERM, |
599 | }, | 600 | }, |
600 | { | 601 | { |
601 | .cmd = MAC802154_HWSIM_CMD_DEL_RADIO, | 602 | .cmd = MAC802154_HWSIM_CMD_DEL_RADIO, |
603 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
602 | .doit = hwsim_del_radio_nl, | 604 | .doit = hwsim_del_radio_nl, |
603 | .flags = GENL_UNS_ADMIN_PERM, | 605 | .flags = GENL_UNS_ADMIN_PERM, |
604 | }, | 606 | }, |
605 | { | 607 | { |
606 | .cmd = MAC802154_HWSIM_CMD_GET_RADIO, | 608 | .cmd = MAC802154_HWSIM_CMD_GET_RADIO, |
609 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
607 | .doit = hwsim_get_radio_nl, | 610 | .doit = hwsim_get_radio_nl, |
608 | .dumpit = hwsim_dump_radio_nl, | 611 | .dumpit = hwsim_dump_radio_nl, |
609 | }, | 612 | }, |
610 | { | 613 | { |
611 | .cmd = MAC802154_HWSIM_CMD_NEW_EDGE, | 614 | .cmd = MAC802154_HWSIM_CMD_NEW_EDGE, |
615 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
612 | .doit = hwsim_new_edge_nl, | 616 | .doit = hwsim_new_edge_nl, |
613 | .flags = GENL_UNS_ADMIN_PERM, | 617 | .flags = GENL_UNS_ADMIN_PERM, |
614 | }, | 618 | }, |
615 | { | 619 | { |
616 | .cmd = MAC802154_HWSIM_CMD_DEL_EDGE, | 620 | .cmd = MAC802154_HWSIM_CMD_DEL_EDGE, |
621 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
617 | .doit = hwsim_del_edge_nl, | 622 | .doit = hwsim_del_edge_nl, |
618 | .flags = GENL_UNS_ADMIN_PERM, | 623 | .flags = GENL_UNS_ADMIN_PERM, |
619 | }, | 624 | }, |
620 | { | 625 | { |
621 | .cmd = MAC802154_HWSIM_CMD_SET_EDGE, | 626 | .cmd = MAC802154_HWSIM_CMD_SET_EDGE, |
627 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
622 | .doit = hwsim_set_edge_lqi, | 628 | .doit = hwsim_set_edge_lqi, |
623 | .flags = GENL_UNS_ADMIN_PERM, | 629 | .flags = GENL_UNS_ADMIN_PERM, |
624 | }, | 630 | }, |
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index c3fa3d8da8f3..009b2902c9d3 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c | |||
@@ -2637,50 +2637,60 @@ done: | |||
2637 | static const struct genl_ops macsec_genl_ops[] = { | 2637 | static const struct genl_ops macsec_genl_ops[] = { |
2638 | { | 2638 | { |
2639 | .cmd = MACSEC_CMD_GET_TXSC, | 2639 | .cmd = MACSEC_CMD_GET_TXSC, |
2640 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2640 | .dumpit = macsec_dump_txsc, | 2641 | .dumpit = macsec_dump_txsc, |
2641 | }, | 2642 | }, |
2642 | { | 2643 | { |
2643 | .cmd = MACSEC_CMD_ADD_RXSC, | 2644 | .cmd = MACSEC_CMD_ADD_RXSC, |
2645 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2644 | .doit = macsec_add_rxsc, | 2646 | .doit = macsec_add_rxsc, |
2645 | .flags = GENL_ADMIN_PERM, | 2647 | .flags = GENL_ADMIN_PERM, |
2646 | }, | 2648 | }, |
2647 | { | 2649 | { |
2648 | .cmd = MACSEC_CMD_DEL_RXSC, | 2650 | .cmd = MACSEC_CMD_DEL_RXSC, |
2651 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2649 | .doit = macsec_del_rxsc, | 2652 | .doit = macsec_del_rxsc, |
2650 | .flags = GENL_ADMIN_PERM, | 2653 | .flags = GENL_ADMIN_PERM, |
2651 | }, | 2654 | }, |
2652 | { | 2655 | { |
2653 | .cmd = MACSEC_CMD_UPD_RXSC, | 2656 | .cmd = MACSEC_CMD_UPD_RXSC, |
2657 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2654 | .doit = macsec_upd_rxsc, | 2658 | .doit = macsec_upd_rxsc, |
2655 | .flags = GENL_ADMIN_PERM, | 2659 | .flags = GENL_ADMIN_PERM, |
2656 | }, | 2660 | }, |
2657 | { | 2661 | { |
2658 | .cmd = MACSEC_CMD_ADD_TXSA, | 2662 | .cmd = MACSEC_CMD_ADD_TXSA, |
2663 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2659 | .doit = macsec_add_txsa, | 2664 | .doit = macsec_add_txsa, |
2660 | .flags = GENL_ADMIN_PERM, | 2665 | .flags = GENL_ADMIN_PERM, |
2661 | }, | 2666 | }, |
2662 | { | 2667 | { |
2663 | .cmd = MACSEC_CMD_DEL_TXSA, | 2668 | .cmd = MACSEC_CMD_DEL_TXSA, |
2669 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2664 | .doit = macsec_del_txsa, | 2670 | .doit = macsec_del_txsa, |
2665 | .flags = GENL_ADMIN_PERM, | 2671 | .flags = GENL_ADMIN_PERM, |
2666 | }, | 2672 | }, |
2667 | { | 2673 | { |
2668 | .cmd = MACSEC_CMD_UPD_TXSA, | 2674 | .cmd = MACSEC_CMD_UPD_TXSA, |
2675 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2669 | .doit = macsec_upd_txsa, | 2676 | .doit = macsec_upd_txsa, |
2670 | .flags = GENL_ADMIN_PERM, | 2677 | .flags = GENL_ADMIN_PERM, |
2671 | }, | 2678 | }, |
2672 | { | 2679 | { |
2673 | .cmd = MACSEC_CMD_ADD_RXSA, | 2680 | .cmd = MACSEC_CMD_ADD_RXSA, |
2681 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2674 | .doit = macsec_add_rxsa, | 2682 | .doit = macsec_add_rxsa, |
2675 | .flags = GENL_ADMIN_PERM, | 2683 | .flags = GENL_ADMIN_PERM, |
2676 | }, | 2684 | }, |
2677 | { | 2685 | { |
2678 | .cmd = MACSEC_CMD_DEL_RXSA, | 2686 | .cmd = MACSEC_CMD_DEL_RXSA, |
2687 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2679 | .doit = macsec_del_rxsa, | 2688 | .doit = macsec_del_rxsa, |
2680 | .flags = GENL_ADMIN_PERM, | 2689 | .flags = GENL_ADMIN_PERM, |
2681 | }, | 2690 | }, |
2682 | { | 2691 | { |
2683 | .cmd = MACSEC_CMD_UPD_RXSA, | 2692 | .cmd = MACSEC_CMD_UPD_RXSA, |
2693 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2684 | .doit = macsec_upd_rxsa, | 2694 | .doit = macsec_upd_rxsa, |
2685 | .flags = GENL_ADMIN_PERM, | 2695 | .flags = GENL_ADMIN_PERM, |
2686 | }, | 2696 | }, |
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c index be58445afbbc..2106045b3e16 100644 --- a/drivers/net/team/team.c +++ b/drivers/net/team/team.c | |||
@@ -2757,20 +2757,24 @@ static int team_nl_cmd_port_list_get(struct sk_buff *skb, | |||
2757 | static const struct genl_ops team_nl_ops[] = { | 2757 | static const struct genl_ops team_nl_ops[] = { |
2758 | { | 2758 | { |
2759 | .cmd = TEAM_CMD_NOOP, | 2759 | .cmd = TEAM_CMD_NOOP, |
2760 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2760 | .doit = team_nl_cmd_noop, | 2761 | .doit = team_nl_cmd_noop, |
2761 | }, | 2762 | }, |
2762 | { | 2763 | { |
2763 | .cmd = TEAM_CMD_OPTIONS_SET, | 2764 | .cmd = TEAM_CMD_OPTIONS_SET, |
2765 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2764 | .doit = team_nl_cmd_options_set, | 2766 | .doit = team_nl_cmd_options_set, |
2765 | .flags = GENL_ADMIN_PERM, | 2767 | .flags = GENL_ADMIN_PERM, |
2766 | }, | 2768 | }, |
2767 | { | 2769 | { |
2768 | .cmd = TEAM_CMD_OPTIONS_GET, | 2770 | .cmd = TEAM_CMD_OPTIONS_GET, |
2771 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2769 | .doit = team_nl_cmd_options_get, | 2772 | .doit = team_nl_cmd_options_get, |
2770 | .flags = GENL_ADMIN_PERM, | 2773 | .flags = GENL_ADMIN_PERM, |
2771 | }, | 2774 | }, |
2772 | { | 2775 | { |
2773 | .cmd = TEAM_CMD_PORT_LIST_GET, | 2776 | .cmd = TEAM_CMD_PORT_LIST_GET, |
2777 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2774 | .doit = team_nl_cmd_port_list_get, | 2778 | .doit = team_nl_cmd_port_list_get, |
2775 | .flags = GENL_ADMIN_PERM, | 2779 | .flags = GENL_ADMIN_PERM, |
2776 | }, | 2780 | }, |
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index 2a1aa2f6e7dc..0dcb511f44e2 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c | |||
@@ -3637,29 +3637,35 @@ done: | |||
3637 | static const struct genl_ops hwsim_ops[] = { | 3637 | static const struct genl_ops hwsim_ops[] = { |
3638 | { | 3638 | { |
3639 | .cmd = HWSIM_CMD_REGISTER, | 3639 | .cmd = HWSIM_CMD_REGISTER, |
3640 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3640 | .doit = hwsim_register_received_nl, | 3641 | .doit = hwsim_register_received_nl, |
3641 | .flags = GENL_UNS_ADMIN_PERM, | 3642 | .flags = GENL_UNS_ADMIN_PERM, |
3642 | }, | 3643 | }, |
3643 | { | 3644 | { |
3644 | .cmd = HWSIM_CMD_FRAME, | 3645 | .cmd = HWSIM_CMD_FRAME, |
3646 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3645 | .doit = hwsim_cloned_frame_received_nl, | 3647 | .doit = hwsim_cloned_frame_received_nl, |
3646 | }, | 3648 | }, |
3647 | { | 3649 | { |
3648 | .cmd = HWSIM_CMD_TX_INFO_FRAME, | 3650 | .cmd = HWSIM_CMD_TX_INFO_FRAME, |
3651 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3649 | .doit = hwsim_tx_info_frame_received_nl, | 3652 | .doit = hwsim_tx_info_frame_received_nl, |
3650 | }, | 3653 | }, |
3651 | { | 3654 | { |
3652 | .cmd = HWSIM_CMD_NEW_RADIO, | 3655 | .cmd = HWSIM_CMD_NEW_RADIO, |
3656 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3653 | .doit = hwsim_new_radio_nl, | 3657 | .doit = hwsim_new_radio_nl, |
3654 | .flags = GENL_UNS_ADMIN_PERM, | 3658 | .flags = GENL_UNS_ADMIN_PERM, |
3655 | }, | 3659 | }, |
3656 | { | 3660 | { |
3657 | .cmd = HWSIM_CMD_DEL_RADIO, | 3661 | .cmd = HWSIM_CMD_DEL_RADIO, |
3662 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3658 | .doit = hwsim_del_radio_nl, | 3663 | .doit = hwsim_del_radio_nl, |
3659 | .flags = GENL_UNS_ADMIN_PERM, | 3664 | .flags = GENL_UNS_ADMIN_PERM, |
3660 | }, | 3665 | }, |
3661 | { | 3666 | { |
3662 | .cmd = HWSIM_CMD_GET_RADIO, | 3667 | .cmd = HWSIM_CMD_GET_RADIO, |
3668 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3663 | .doit = hwsim_get_radio_nl, | 3669 | .doit = hwsim_get_radio_nl, |
3664 | .dumpit = hwsim_dump_radio_nl, | 3670 | .dumpit = hwsim_dump_radio_nl, |
3665 | }, | 3671 | }, |
diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c index 481d371c4b01..40b29ca5a98d 100644 --- a/drivers/target/target_core_user.c +++ b/drivers/target/target_core_user.c | |||
@@ -441,21 +441,25 @@ static int tcmu_genl_set_features(struct sk_buff *skb, struct genl_info *info) | |||
441 | static const struct genl_ops tcmu_genl_ops[] = { | 441 | static const struct genl_ops tcmu_genl_ops[] = { |
442 | { | 442 | { |
443 | .cmd = TCMU_CMD_SET_FEATURES, | 443 | .cmd = TCMU_CMD_SET_FEATURES, |
444 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
444 | .flags = GENL_ADMIN_PERM, | 445 | .flags = GENL_ADMIN_PERM, |
445 | .doit = tcmu_genl_set_features, | 446 | .doit = tcmu_genl_set_features, |
446 | }, | 447 | }, |
447 | { | 448 | { |
448 | .cmd = TCMU_CMD_ADDED_DEVICE_DONE, | 449 | .cmd = TCMU_CMD_ADDED_DEVICE_DONE, |
450 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
449 | .flags = GENL_ADMIN_PERM, | 451 | .flags = GENL_ADMIN_PERM, |
450 | .doit = tcmu_genl_add_dev_done, | 452 | .doit = tcmu_genl_add_dev_done, |
451 | }, | 453 | }, |
452 | { | 454 | { |
453 | .cmd = TCMU_CMD_REMOVED_DEVICE_DONE, | 455 | .cmd = TCMU_CMD_REMOVED_DEVICE_DONE, |
456 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
454 | .flags = GENL_ADMIN_PERM, | 457 | .flags = GENL_ADMIN_PERM, |
455 | .doit = tcmu_genl_rm_dev_done, | 458 | .doit = tcmu_genl_rm_dev_done, |
456 | }, | 459 | }, |
457 | { | 460 | { |
458 | .cmd = TCMU_CMD_RECONFIG_DEVICE_DONE, | 461 | .cmd = TCMU_CMD_RECONFIG_DEVICE_DONE, |
462 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
459 | .flags = GENL_ADMIN_PERM, | 463 | .flags = GENL_ADMIN_PERM, |
460 | .doit = tcmu_genl_reconfig_dev_done, | 464 | .doit = tcmu_genl_reconfig_dev_done, |
461 | }, | 465 | }, |
diff --git a/fs/dlm/netlink.c b/fs/dlm/netlink.c index 43a96c330570..d8e27defa89f 100644 --- a/fs/dlm/netlink.c +++ b/fs/dlm/netlink.c | |||
@@ -68,6 +68,7 @@ static int user_cmd(struct sk_buff *skb, struct genl_info *info) | |||
68 | static const struct genl_ops dlm_nl_ops[] = { | 68 | static const struct genl_ops dlm_nl_ops[] = { |
69 | { | 69 | { |
70 | .cmd = DLM_CMD_HELLO, | 70 | .cmd = DLM_CMD_HELLO, |
71 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
71 | .doit = user_cmd, | 72 | .doit = user_cmd, |
72 | }, | 73 | }, |
73 | }; | 74 | }; |
diff --git a/include/net/genetlink.h b/include/net/genetlink.h index 68de579cfe5e..9292f1c588b7 100644 --- a/include/net/genetlink.h +++ b/include/net/genetlink.h | |||
@@ -121,6 +121,12 @@ static inline int genl_err_attr(struct genl_info *info, int err, | |||
121 | return err; | 121 | return err; |
122 | } | 122 | } |
123 | 123 | ||
124 | enum genl_validate_flags { | ||
125 | GENL_DONT_VALIDATE_STRICT = BIT(0), | ||
126 | GENL_DONT_VALIDATE_DUMP = BIT(1), | ||
127 | GENL_DONT_VALIDATE_DUMP_STRICT = BIT(2), | ||
128 | }; | ||
129 | |||
124 | /** | 130 | /** |
125 | * struct genl_ops - generic netlink operations | 131 | * struct genl_ops - generic netlink operations |
126 | * @cmd: command identifier | 132 | * @cmd: command identifier |
@@ -141,6 +147,7 @@ struct genl_ops { | |||
141 | u8 cmd; | 147 | u8 cmd; |
142 | u8 internal_flags; | 148 | u8 internal_flags; |
143 | u8 flags; | 149 | u8 flags; |
150 | u8 validate; | ||
144 | }; | 151 | }; |
145 | 152 | ||
146 | int genl_register_family(struct genl_family *family); | 153 | int genl_register_family(struct genl_family *family); |
diff --git a/kernel/taskstats.c b/kernel/taskstats.c index 0e347f1c7800..5f852b8f59f7 100644 --- a/kernel/taskstats.c +++ b/kernel/taskstats.c | |||
@@ -649,12 +649,14 @@ err: | |||
649 | static const struct genl_ops taskstats_ops[] = { | 649 | static const struct genl_ops taskstats_ops[] = { |
650 | { | 650 | { |
651 | .cmd = TASKSTATS_CMD_GET, | 651 | .cmd = TASKSTATS_CMD_GET, |
652 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
652 | .doit = taskstats_user_cmd, | 653 | .doit = taskstats_user_cmd, |
653 | /* policy enforced later */ | 654 | /* policy enforced later */ |
654 | .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_HASPOL, | 655 | .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_HASPOL, |
655 | }, | 656 | }, |
656 | { | 657 | { |
657 | .cmd = CGROUPSTATS_CMD_GET, | 658 | .cmd = CGROUPSTATS_CMD_GET, |
659 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
658 | .doit = cgroupstats_user_cmd, | 660 | .doit = cgroupstats_user_cmd, |
659 | /* policy enforced later */ | 661 | /* policy enforced later */ |
660 | .flags = GENL_CMD_CAP_HASPOL, | 662 | .flags = GENL_CMD_CAP_HASPOL, |
diff --git a/net/batman-adv/netlink.c b/net/batman-adv/netlink.c index e7907308b331..a67720fad46c 100644 --- a/net/batman-adv/netlink.c +++ b/net/batman-adv/netlink.c | |||
@@ -1343,29 +1343,34 @@ static void batadv_post_doit(const struct genl_ops *ops, struct sk_buff *skb, | |||
1343 | static const struct genl_ops batadv_netlink_ops[] = { | 1343 | static const struct genl_ops batadv_netlink_ops[] = { |
1344 | { | 1344 | { |
1345 | .cmd = BATADV_CMD_GET_MESH, | 1345 | .cmd = BATADV_CMD_GET_MESH, |
1346 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1346 | /* can be retrieved by unprivileged users */ | 1347 | /* can be retrieved by unprivileged users */ |
1347 | .doit = batadv_netlink_get_mesh, | 1348 | .doit = batadv_netlink_get_mesh, |
1348 | .internal_flags = BATADV_FLAG_NEED_MESH, | 1349 | .internal_flags = BATADV_FLAG_NEED_MESH, |
1349 | }, | 1350 | }, |
1350 | { | 1351 | { |
1351 | .cmd = BATADV_CMD_TP_METER, | 1352 | .cmd = BATADV_CMD_TP_METER, |
1353 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1352 | .flags = GENL_ADMIN_PERM, | 1354 | .flags = GENL_ADMIN_PERM, |
1353 | .doit = batadv_netlink_tp_meter_start, | 1355 | .doit = batadv_netlink_tp_meter_start, |
1354 | .internal_flags = BATADV_FLAG_NEED_MESH, | 1356 | .internal_flags = BATADV_FLAG_NEED_MESH, |
1355 | }, | 1357 | }, |
1356 | { | 1358 | { |
1357 | .cmd = BATADV_CMD_TP_METER_CANCEL, | 1359 | .cmd = BATADV_CMD_TP_METER_CANCEL, |
1360 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1358 | .flags = GENL_ADMIN_PERM, | 1361 | .flags = GENL_ADMIN_PERM, |
1359 | .doit = batadv_netlink_tp_meter_cancel, | 1362 | .doit = batadv_netlink_tp_meter_cancel, |
1360 | .internal_flags = BATADV_FLAG_NEED_MESH, | 1363 | .internal_flags = BATADV_FLAG_NEED_MESH, |
1361 | }, | 1364 | }, |
1362 | { | 1365 | { |
1363 | .cmd = BATADV_CMD_GET_ROUTING_ALGOS, | 1366 | .cmd = BATADV_CMD_GET_ROUTING_ALGOS, |
1367 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1364 | .flags = GENL_ADMIN_PERM, | 1368 | .flags = GENL_ADMIN_PERM, |
1365 | .dumpit = batadv_algo_dump, | 1369 | .dumpit = batadv_algo_dump, |
1366 | }, | 1370 | }, |
1367 | { | 1371 | { |
1368 | .cmd = BATADV_CMD_GET_HARDIF, | 1372 | .cmd = BATADV_CMD_GET_HARDIF, |
1373 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1369 | /* can be retrieved by unprivileged users */ | 1374 | /* can be retrieved by unprivileged users */ |
1370 | .dumpit = batadv_netlink_dump_hardif, | 1375 | .dumpit = batadv_netlink_dump_hardif, |
1371 | .doit = batadv_netlink_get_hardif, | 1376 | .doit = batadv_netlink_get_hardif, |
@@ -1374,57 +1379,68 @@ static const struct genl_ops batadv_netlink_ops[] = { | |||
1374 | }, | 1379 | }, |
1375 | { | 1380 | { |
1376 | .cmd = BATADV_CMD_GET_TRANSTABLE_LOCAL, | 1381 | .cmd = BATADV_CMD_GET_TRANSTABLE_LOCAL, |
1382 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1377 | .flags = GENL_ADMIN_PERM, | 1383 | .flags = GENL_ADMIN_PERM, |
1378 | .dumpit = batadv_tt_local_dump, | 1384 | .dumpit = batadv_tt_local_dump, |
1379 | }, | 1385 | }, |
1380 | { | 1386 | { |
1381 | .cmd = BATADV_CMD_GET_TRANSTABLE_GLOBAL, | 1387 | .cmd = BATADV_CMD_GET_TRANSTABLE_GLOBAL, |
1388 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1382 | .flags = GENL_ADMIN_PERM, | 1389 | .flags = GENL_ADMIN_PERM, |
1383 | .dumpit = batadv_tt_global_dump, | 1390 | .dumpit = batadv_tt_global_dump, |
1384 | }, | 1391 | }, |
1385 | { | 1392 | { |
1386 | .cmd = BATADV_CMD_GET_ORIGINATORS, | 1393 | .cmd = BATADV_CMD_GET_ORIGINATORS, |
1394 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1387 | .flags = GENL_ADMIN_PERM, | 1395 | .flags = GENL_ADMIN_PERM, |
1388 | .dumpit = batadv_orig_dump, | 1396 | .dumpit = batadv_orig_dump, |
1389 | }, | 1397 | }, |
1390 | { | 1398 | { |
1391 | .cmd = BATADV_CMD_GET_NEIGHBORS, | 1399 | .cmd = BATADV_CMD_GET_NEIGHBORS, |
1400 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1392 | .flags = GENL_ADMIN_PERM, | 1401 | .flags = GENL_ADMIN_PERM, |
1393 | .dumpit = batadv_hardif_neigh_dump, | 1402 | .dumpit = batadv_hardif_neigh_dump, |
1394 | }, | 1403 | }, |
1395 | { | 1404 | { |
1396 | .cmd = BATADV_CMD_GET_GATEWAYS, | 1405 | .cmd = BATADV_CMD_GET_GATEWAYS, |
1406 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1397 | .flags = GENL_ADMIN_PERM, | 1407 | .flags = GENL_ADMIN_PERM, |
1398 | .dumpit = batadv_gw_dump, | 1408 | .dumpit = batadv_gw_dump, |
1399 | }, | 1409 | }, |
1400 | { | 1410 | { |
1401 | .cmd = BATADV_CMD_GET_BLA_CLAIM, | 1411 | .cmd = BATADV_CMD_GET_BLA_CLAIM, |
1412 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1402 | .flags = GENL_ADMIN_PERM, | 1413 | .flags = GENL_ADMIN_PERM, |
1403 | .dumpit = batadv_bla_claim_dump, | 1414 | .dumpit = batadv_bla_claim_dump, |
1404 | }, | 1415 | }, |
1405 | { | 1416 | { |
1406 | .cmd = BATADV_CMD_GET_BLA_BACKBONE, | 1417 | .cmd = BATADV_CMD_GET_BLA_BACKBONE, |
1418 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1407 | .flags = GENL_ADMIN_PERM, | 1419 | .flags = GENL_ADMIN_PERM, |
1408 | .dumpit = batadv_bla_backbone_dump, | 1420 | .dumpit = batadv_bla_backbone_dump, |
1409 | }, | 1421 | }, |
1410 | { | 1422 | { |
1411 | .cmd = BATADV_CMD_GET_DAT_CACHE, | 1423 | .cmd = BATADV_CMD_GET_DAT_CACHE, |
1424 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1412 | .flags = GENL_ADMIN_PERM, | 1425 | .flags = GENL_ADMIN_PERM, |
1413 | .dumpit = batadv_dat_cache_dump, | 1426 | .dumpit = batadv_dat_cache_dump, |
1414 | }, | 1427 | }, |
1415 | { | 1428 | { |
1416 | .cmd = BATADV_CMD_GET_MCAST_FLAGS, | 1429 | .cmd = BATADV_CMD_GET_MCAST_FLAGS, |
1430 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1417 | .flags = GENL_ADMIN_PERM, | 1431 | .flags = GENL_ADMIN_PERM, |
1418 | .dumpit = batadv_mcast_flags_dump, | 1432 | .dumpit = batadv_mcast_flags_dump, |
1419 | }, | 1433 | }, |
1420 | { | 1434 | { |
1421 | .cmd = BATADV_CMD_SET_MESH, | 1435 | .cmd = BATADV_CMD_SET_MESH, |
1436 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1422 | .flags = GENL_ADMIN_PERM, | 1437 | .flags = GENL_ADMIN_PERM, |
1423 | .doit = batadv_netlink_set_mesh, | 1438 | .doit = batadv_netlink_set_mesh, |
1424 | .internal_flags = BATADV_FLAG_NEED_MESH, | 1439 | .internal_flags = BATADV_FLAG_NEED_MESH, |
1425 | }, | 1440 | }, |
1426 | { | 1441 | { |
1427 | .cmd = BATADV_CMD_SET_HARDIF, | 1442 | .cmd = BATADV_CMD_SET_HARDIF, |
1443 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1428 | .flags = GENL_ADMIN_PERM, | 1444 | .flags = GENL_ADMIN_PERM, |
1429 | .doit = batadv_netlink_set_hardif, | 1445 | .doit = batadv_netlink_set_hardif, |
1430 | .internal_flags = BATADV_FLAG_NEED_MESH | | 1446 | .internal_flags = BATADV_FLAG_NEED_MESH | |
@@ -1432,6 +1448,7 @@ static const struct genl_ops batadv_netlink_ops[] = { | |||
1432 | }, | 1448 | }, |
1433 | { | 1449 | { |
1434 | .cmd = BATADV_CMD_GET_VLAN, | 1450 | .cmd = BATADV_CMD_GET_VLAN, |
1451 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1435 | /* can be retrieved by unprivileged users */ | 1452 | /* can be retrieved by unprivileged users */ |
1436 | .doit = batadv_netlink_get_vlan, | 1453 | .doit = batadv_netlink_get_vlan, |
1437 | .internal_flags = BATADV_FLAG_NEED_MESH | | 1454 | .internal_flags = BATADV_FLAG_NEED_MESH | |
@@ -1439,6 +1456,7 @@ static const struct genl_ops batadv_netlink_ops[] = { | |||
1439 | }, | 1456 | }, |
1440 | { | 1457 | { |
1441 | .cmd = BATADV_CMD_SET_VLAN, | 1458 | .cmd = BATADV_CMD_SET_VLAN, |
1459 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1442 | .flags = GENL_ADMIN_PERM, | 1460 | .flags = GENL_ADMIN_PERM, |
1443 | .doit = batadv_netlink_set_vlan, | 1461 | .doit = batadv_netlink_set_vlan, |
1444 | .internal_flags = BATADV_FLAG_NEED_MESH | | 1462 | .internal_flags = BATADV_FLAG_NEED_MESH | |
diff --git a/net/core/devlink.c b/net/core/devlink.c index b020d182c9fc..4e28d04c0165 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c | |||
@@ -4948,6 +4948,7 @@ static const struct nla_policy devlink_nl_policy[DEVLINK_ATTR_MAX + 1] = { | |||
4948 | static const struct genl_ops devlink_nl_ops[] = { | 4948 | static const struct genl_ops devlink_nl_ops[] = { |
4949 | { | 4949 | { |
4950 | .cmd = DEVLINK_CMD_GET, | 4950 | .cmd = DEVLINK_CMD_GET, |
4951 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
4951 | .doit = devlink_nl_cmd_get_doit, | 4952 | .doit = devlink_nl_cmd_get_doit, |
4952 | .dumpit = devlink_nl_cmd_get_dumpit, | 4953 | .dumpit = devlink_nl_cmd_get_dumpit, |
4953 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 4954 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
@@ -4955,6 +4956,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
4955 | }, | 4956 | }, |
4956 | { | 4957 | { |
4957 | .cmd = DEVLINK_CMD_PORT_GET, | 4958 | .cmd = DEVLINK_CMD_PORT_GET, |
4959 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
4958 | .doit = devlink_nl_cmd_port_get_doit, | 4960 | .doit = devlink_nl_cmd_port_get_doit, |
4959 | .dumpit = devlink_nl_cmd_port_get_dumpit, | 4961 | .dumpit = devlink_nl_cmd_port_get_dumpit, |
4960 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, | 4962 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, |
@@ -4962,12 +4964,14 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
4962 | }, | 4964 | }, |
4963 | { | 4965 | { |
4964 | .cmd = DEVLINK_CMD_PORT_SET, | 4966 | .cmd = DEVLINK_CMD_PORT_SET, |
4967 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
4965 | .doit = devlink_nl_cmd_port_set_doit, | 4968 | .doit = devlink_nl_cmd_port_set_doit, |
4966 | .flags = GENL_ADMIN_PERM, | 4969 | .flags = GENL_ADMIN_PERM, |
4967 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, | 4970 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, |
4968 | }, | 4971 | }, |
4969 | { | 4972 | { |
4970 | .cmd = DEVLINK_CMD_PORT_SPLIT, | 4973 | .cmd = DEVLINK_CMD_PORT_SPLIT, |
4974 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
4971 | .doit = devlink_nl_cmd_port_split_doit, | 4975 | .doit = devlink_nl_cmd_port_split_doit, |
4972 | .flags = GENL_ADMIN_PERM, | 4976 | .flags = GENL_ADMIN_PERM, |
4973 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 4977 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -4975,6 +4979,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
4975 | }, | 4979 | }, |
4976 | { | 4980 | { |
4977 | .cmd = DEVLINK_CMD_PORT_UNSPLIT, | 4981 | .cmd = DEVLINK_CMD_PORT_UNSPLIT, |
4982 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
4978 | .doit = devlink_nl_cmd_port_unsplit_doit, | 4983 | .doit = devlink_nl_cmd_port_unsplit_doit, |
4979 | .flags = GENL_ADMIN_PERM, | 4984 | .flags = GENL_ADMIN_PERM, |
4980 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 4985 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -4982,6 +4987,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
4982 | }, | 4987 | }, |
4983 | { | 4988 | { |
4984 | .cmd = DEVLINK_CMD_SB_GET, | 4989 | .cmd = DEVLINK_CMD_SB_GET, |
4990 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
4985 | .doit = devlink_nl_cmd_sb_get_doit, | 4991 | .doit = devlink_nl_cmd_sb_get_doit, |
4986 | .dumpit = devlink_nl_cmd_sb_get_dumpit, | 4992 | .dumpit = devlink_nl_cmd_sb_get_dumpit, |
4987 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 4993 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -4990,6 +4996,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
4990 | }, | 4996 | }, |
4991 | { | 4997 | { |
4992 | .cmd = DEVLINK_CMD_SB_POOL_GET, | 4998 | .cmd = DEVLINK_CMD_SB_POOL_GET, |
4999 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
4993 | .doit = devlink_nl_cmd_sb_pool_get_doit, | 5000 | .doit = devlink_nl_cmd_sb_pool_get_doit, |
4994 | .dumpit = devlink_nl_cmd_sb_pool_get_dumpit, | 5001 | .dumpit = devlink_nl_cmd_sb_pool_get_dumpit, |
4995 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 5002 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -4998,6 +5005,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
4998 | }, | 5005 | }, |
4999 | { | 5006 | { |
5000 | .cmd = DEVLINK_CMD_SB_POOL_SET, | 5007 | .cmd = DEVLINK_CMD_SB_POOL_SET, |
5008 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5001 | .doit = devlink_nl_cmd_sb_pool_set_doit, | 5009 | .doit = devlink_nl_cmd_sb_pool_set_doit, |
5002 | .flags = GENL_ADMIN_PERM, | 5010 | .flags = GENL_ADMIN_PERM, |
5003 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 5011 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -5005,6 +5013,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5005 | }, | 5013 | }, |
5006 | { | 5014 | { |
5007 | .cmd = DEVLINK_CMD_SB_PORT_POOL_GET, | 5015 | .cmd = DEVLINK_CMD_SB_PORT_POOL_GET, |
5016 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5008 | .doit = devlink_nl_cmd_sb_port_pool_get_doit, | 5017 | .doit = devlink_nl_cmd_sb_port_pool_get_doit, |
5009 | .dumpit = devlink_nl_cmd_sb_port_pool_get_dumpit, | 5018 | .dumpit = devlink_nl_cmd_sb_port_pool_get_dumpit, |
5010 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | | 5019 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | |
@@ -5013,6 +5022,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5013 | }, | 5022 | }, |
5014 | { | 5023 | { |
5015 | .cmd = DEVLINK_CMD_SB_PORT_POOL_SET, | 5024 | .cmd = DEVLINK_CMD_SB_PORT_POOL_SET, |
5025 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5016 | .doit = devlink_nl_cmd_sb_port_pool_set_doit, | 5026 | .doit = devlink_nl_cmd_sb_port_pool_set_doit, |
5017 | .flags = GENL_ADMIN_PERM, | 5027 | .flags = GENL_ADMIN_PERM, |
5018 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | | 5028 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | |
@@ -5020,6 +5030,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5020 | }, | 5030 | }, |
5021 | { | 5031 | { |
5022 | .cmd = DEVLINK_CMD_SB_TC_POOL_BIND_GET, | 5032 | .cmd = DEVLINK_CMD_SB_TC_POOL_BIND_GET, |
5033 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5023 | .doit = devlink_nl_cmd_sb_tc_pool_bind_get_doit, | 5034 | .doit = devlink_nl_cmd_sb_tc_pool_bind_get_doit, |
5024 | .dumpit = devlink_nl_cmd_sb_tc_pool_bind_get_dumpit, | 5035 | .dumpit = devlink_nl_cmd_sb_tc_pool_bind_get_dumpit, |
5025 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | | 5036 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | |
@@ -5028,6 +5039,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5028 | }, | 5039 | }, |
5029 | { | 5040 | { |
5030 | .cmd = DEVLINK_CMD_SB_TC_POOL_BIND_SET, | 5041 | .cmd = DEVLINK_CMD_SB_TC_POOL_BIND_SET, |
5042 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5031 | .doit = devlink_nl_cmd_sb_tc_pool_bind_set_doit, | 5043 | .doit = devlink_nl_cmd_sb_tc_pool_bind_set_doit, |
5032 | .flags = GENL_ADMIN_PERM, | 5044 | .flags = GENL_ADMIN_PERM, |
5033 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | | 5045 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | |
@@ -5035,6 +5047,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5035 | }, | 5047 | }, |
5036 | { | 5048 | { |
5037 | .cmd = DEVLINK_CMD_SB_OCC_SNAPSHOT, | 5049 | .cmd = DEVLINK_CMD_SB_OCC_SNAPSHOT, |
5050 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5038 | .doit = devlink_nl_cmd_sb_occ_snapshot_doit, | 5051 | .doit = devlink_nl_cmd_sb_occ_snapshot_doit, |
5039 | .flags = GENL_ADMIN_PERM, | 5052 | .flags = GENL_ADMIN_PERM, |
5040 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 5053 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -5042,6 +5055,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5042 | }, | 5055 | }, |
5043 | { | 5056 | { |
5044 | .cmd = DEVLINK_CMD_SB_OCC_MAX_CLEAR, | 5057 | .cmd = DEVLINK_CMD_SB_OCC_MAX_CLEAR, |
5058 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5045 | .doit = devlink_nl_cmd_sb_occ_max_clear_doit, | 5059 | .doit = devlink_nl_cmd_sb_occ_max_clear_doit, |
5046 | .flags = GENL_ADMIN_PERM, | 5060 | .flags = GENL_ADMIN_PERM, |
5047 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 5061 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -5049,12 +5063,14 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5049 | }, | 5063 | }, |
5050 | { | 5064 | { |
5051 | .cmd = DEVLINK_CMD_ESWITCH_GET, | 5065 | .cmd = DEVLINK_CMD_ESWITCH_GET, |
5066 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5052 | .doit = devlink_nl_cmd_eswitch_get_doit, | 5067 | .doit = devlink_nl_cmd_eswitch_get_doit, |
5053 | .flags = GENL_ADMIN_PERM, | 5068 | .flags = GENL_ADMIN_PERM, |
5054 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5069 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5055 | }, | 5070 | }, |
5056 | { | 5071 | { |
5057 | .cmd = DEVLINK_CMD_ESWITCH_SET, | 5072 | .cmd = DEVLINK_CMD_ESWITCH_SET, |
5073 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5058 | .doit = devlink_nl_cmd_eswitch_set_doit, | 5074 | .doit = devlink_nl_cmd_eswitch_set_doit, |
5059 | .flags = GENL_ADMIN_PERM, | 5075 | .flags = GENL_ADMIN_PERM, |
5060 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 5076 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -5062,42 +5078,49 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5062 | }, | 5078 | }, |
5063 | { | 5079 | { |
5064 | .cmd = DEVLINK_CMD_DPIPE_TABLE_GET, | 5080 | .cmd = DEVLINK_CMD_DPIPE_TABLE_GET, |
5081 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5065 | .doit = devlink_nl_cmd_dpipe_table_get, | 5082 | .doit = devlink_nl_cmd_dpipe_table_get, |
5066 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5083 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5067 | /* can be retrieved by unprivileged users */ | 5084 | /* can be retrieved by unprivileged users */ |
5068 | }, | 5085 | }, |
5069 | { | 5086 | { |
5070 | .cmd = DEVLINK_CMD_DPIPE_ENTRIES_GET, | 5087 | .cmd = DEVLINK_CMD_DPIPE_ENTRIES_GET, |
5088 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5071 | .doit = devlink_nl_cmd_dpipe_entries_get, | 5089 | .doit = devlink_nl_cmd_dpipe_entries_get, |
5072 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5090 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5073 | /* can be retrieved by unprivileged users */ | 5091 | /* can be retrieved by unprivileged users */ |
5074 | }, | 5092 | }, |
5075 | { | 5093 | { |
5076 | .cmd = DEVLINK_CMD_DPIPE_HEADERS_GET, | 5094 | .cmd = DEVLINK_CMD_DPIPE_HEADERS_GET, |
5095 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5077 | .doit = devlink_nl_cmd_dpipe_headers_get, | 5096 | .doit = devlink_nl_cmd_dpipe_headers_get, |
5078 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5097 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5079 | /* can be retrieved by unprivileged users */ | 5098 | /* can be retrieved by unprivileged users */ |
5080 | }, | 5099 | }, |
5081 | { | 5100 | { |
5082 | .cmd = DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET, | 5101 | .cmd = DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET, |
5102 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5083 | .doit = devlink_nl_cmd_dpipe_table_counters_set, | 5103 | .doit = devlink_nl_cmd_dpipe_table_counters_set, |
5084 | .flags = GENL_ADMIN_PERM, | 5104 | .flags = GENL_ADMIN_PERM, |
5085 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5105 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5086 | }, | 5106 | }, |
5087 | { | 5107 | { |
5088 | .cmd = DEVLINK_CMD_RESOURCE_SET, | 5108 | .cmd = DEVLINK_CMD_RESOURCE_SET, |
5109 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5089 | .doit = devlink_nl_cmd_resource_set, | 5110 | .doit = devlink_nl_cmd_resource_set, |
5090 | .flags = GENL_ADMIN_PERM, | 5111 | .flags = GENL_ADMIN_PERM, |
5091 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5112 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5092 | }, | 5113 | }, |
5093 | { | 5114 | { |
5094 | .cmd = DEVLINK_CMD_RESOURCE_DUMP, | 5115 | .cmd = DEVLINK_CMD_RESOURCE_DUMP, |
5116 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5095 | .doit = devlink_nl_cmd_resource_dump, | 5117 | .doit = devlink_nl_cmd_resource_dump, |
5096 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5118 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5097 | /* can be retrieved by unprivileged users */ | 5119 | /* can be retrieved by unprivileged users */ |
5098 | }, | 5120 | }, |
5099 | { | 5121 | { |
5100 | .cmd = DEVLINK_CMD_RELOAD, | 5122 | .cmd = DEVLINK_CMD_RELOAD, |
5123 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5101 | .doit = devlink_nl_cmd_reload, | 5124 | .doit = devlink_nl_cmd_reload, |
5102 | .flags = GENL_ADMIN_PERM, | 5125 | .flags = GENL_ADMIN_PERM, |
5103 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 5126 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -5105,6 +5128,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5105 | }, | 5128 | }, |
5106 | { | 5129 | { |
5107 | .cmd = DEVLINK_CMD_PARAM_GET, | 5130 | .cmd = DEVLINK_CMD_PARAM_GET, |
5131 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5108 | .doit = devlink_nl_cmd_param_get_doit, | 5132 | .doit = devlink_nl_cmd_param_get_doit, |
5109 | .dumpit = devlink_nl_cmd_param_get_dumpit, | 5133 | .dumpit = devlink_nl_cmd_param_get_dumpit, |
5110 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5134 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
@@ -5112,12 +5136,14 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5112 | }, | 5136 | }, |
5113 | { | 5137 | { |
5114 | .cmd = DEVLINK_CMD_PARAM_SET, | 5138 | .cmd = DEVLINK_CMD_PARAM_SET, |
5139 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5115 | .doit = devlink_nl_cmd_param_set_doit, | 5140 | .doit = devlink_nl_cmd_param_set_doit, |
5116 | .flags = GENL_ADMIN_PERM, | 5141 | .flags = GENL_ADMIN_PERM, |
5117 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5142 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5118 | }, | 5143 | }, |
5119 | { | 5144 | { |
5120 | .cmd = DEVLINK_CMD_PORT_PARAM_GET, | 5145 | .cmd = DEVLINK_CMD_PORT_PARAM_GET, |
5146 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5121 | .doit = devlink_nl_cmd_port_param_get_doit, | 5147 | .doit = devlink_nl_cmd_port_param_get_doit, |
5122 | .dumpit = devlink_nl_cmd_port_param_get_dumpit, | 5148 | .dumpit = devlink_nl_cmd_port_param_get_dumpit, |
5123 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, | 5149 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, |
@@ -5125,12 +5151,14 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5125 | }, | 5151 | }, |
5126 | { | 5152 | { |
5127 | .cmd = DEVLINK_CMD_PORT_PARAM_SET, | 5153 | .cmd = DEVLINK_CMD_PORT_PARAM_SET, |
5154 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5128 | .doit = devlink_nl_cmd_port_param_set_doit, | 5155 | .doit = devlink_nl_cmd_port_param_set_doit, |
5129 | .flags = GENL_ADMIN_PERM, | 5156 | .flags = GENL_ADMIN_PERM, |
5130 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, | 5157 | .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, |
5131 | }, | 5158 | }, |
5132 | { | 5159 | { |
5133 | .cmd = DEVLINK_CMD_REGION_GET, | 5160 | .cmd = DEVLINK_CMD_REGION_GET, |
5161 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5134 | .doit = devlink_nl_cmd_region_get_doit, | 5162 | .doit = devlink_nl_cmd_region_get_doit, |
5135 | .dumpit = devlink_nl_cmd_region_get_dumpit, | 5163 | .dumpit = devlink_nl_cmd_region_get_dumpit, |
5136 | .flags = GENL_ADMIN_PERM, | 5164 | .flags = GENL_ADMIN_PERM, |
@@ -5138,18 +5166,21 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5138 | }, | 5166 | }, |
5139 | { | 5167 | { |
5140 | .cmd = DEVLINK_CMD_REGION_DEL, | 5168 | .cmd = DEVLINK_CMD_REGION_DEL, |
5169 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5141 | .doit = devlink_nl_cmd_region_del, | 5170 | .doit = devlink_nl_cmd_region_del, |
5142 | .flags = GENL_ADMIN_PERM, | 5171 | .flags = GENL_ADMIN_PERM, |
5143 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5172 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5144 | }, | 5173 | }, |
5145 | { | 5174 | { |
5146 | .cmd = DEVLINK_CMD_REGION_READ, | 5175 | .cmd = DEVLINK_CMD_REGION_READ, |
5176 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5147 | .dumpit = devlink_nl_cmd_region_read_dumpit, | 5177 | .dumpit = devlink_nl_cmd_region_read_dumpit, |
5148 | .flags = GENL_ADMIN_PERM, | 5178 | .flags = GENL_ADMIN_PERM, |
5149 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5179 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5150 | }, | 5180 | }, |
5151 | { | 5181 | { |
5152 | .cmd = DEVLINK_CMD_INFO_GET, | 5182 | .cmd = DEVLINK_CMD_INFO_GET, |
5183 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5153 | .doit = devlink_nl_cmd_info_get_doit, | 5184 | .doit = devlink_nl_cmd_info_get_doit, |
5154 | .dumpit = devlink_nl_cmd_info_get_dumpit, | 5185 | .dumpit = devlink_nl_cmd_info_get_dumpit, |
5155 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5186 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
@@ -5157,6 +5188,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5157 | }, | 5188 | }, |
5158 | { | 5189 | { |
5159 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_GET, | 5190 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_GET, |
5191 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5160 | .doit = devlink_nl_cmd_health_reporter_get_doit, | 5192 | .doit = devlink_nl_cmd_health_reporter_get_doit, |
5161 | .dumpit = devlink_nl_cmd_health_reporter_get_dumpit, | 5193 | .dumpit = devlink_nl_cmd_health_reporter_get_dumpit, |
5162 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5194 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
@@ -5164,24 +5196,28 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5164 | }, | 5196 | }, |
5165 | { | 5197 | { |
5166 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_SET, | 5198 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_SET, |
5199 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5167 | .doit = devlink_nl_cmd_health_reporter_set_doit, | 5200 | .doit = devlink_nl_cmd_health_reporter_set_doit, |
5168 | .flags = GENL_ADMIN_PERM, | 5201 | .flags = GENL_ADMIN_PERM, |
5169 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5202 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5170 | }, | 5203 | }, |
5171 | { | 5204 | { |
5172 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_RECOVER, | 5205 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_RECOVER, |
5206 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5173 | .doit = devlink_nl_cmd_health_reporter_recover_doit, | 5207 | .doit = devlink_nl_cmd_health_reporter_recover_doit, |
5174 | .flags = GENL_ADMIN_PERM, | 5208 | .flags = GENL_ADMIN_PERM, |
5175 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5209 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5176 | }, | 5210 | }, |
5177 | { | 5211 | { |
5178 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE, | 5212 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE, |
5213 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5179 | .doit = devlink_nl_cmd_health_reporter_diagnose_doit, | 5214 | .doit = devlink_nl_cmd_health_reporter_diagnose_doit, |
5180 | .flags = GENL_ADMIN_PERM, | 5215 | .flags = GENL_ADMIN_PERM, |
5181 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5216 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
5182 | }, | 5217 | }, |
5183 | { | 5218 | { |
5184 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET, | 5219 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET, |
5220 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5185 | .doit = devlink_nl_cmd_health_reporter_dump_get_doit, | 5221 | .doit = devlink_nl_cmd_health_reporter_dump_get_doit, |
5186 | .flags = GENL_ADMIN_PERM, | 5222 | .flags = GENL_ADMIN_PERM, |
5187 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 5223 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -5189,6 +5225,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5189 | }, | 5225 | }, |
5190 | { | 5226 | { |
5191 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR, | 5227 | .cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR, |
5228 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5192 | .doit = devlink_nl_cmd_health_reporter_dump_clear_doit, | 5229 | .doit = devlink_nl_cmd_health_reporter_dump_clear_doit, |
5193 | .flags = GENL_ADMIN_PERM, | 5230 | .flags = GENL_ADMIN_PERM, |
5194 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | | 5231 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | |
@@ -5196,6 +5233,7 @@ static const struct genl_ops devlink_nl_ops[] = { | |||
5196 | }, | 5233 | }, |
5197 | { | 5234 | { |
5198 | .cmd = DEVLINK_CMD_FLASH_UPDATE, | 5235 | .cmd = DEVLINK_CMD_FLASH_UPDATE, |
5236 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
5199 | .doit = devlink_nl_cmd_flash_update, | 5237 | .doit = devlink_nl_cmd_flash_update, |
5200 | .flags = GENL_ADMIN_PERM, | 5238 | .flags = GENL_ADMIN_PERM, |
5201 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, | 5239 | .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, |
diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c index c7785efeea57..d4ce0542acfa 100644 --- a/net/core/drop_monitor.c +++ b/net/core/drop_monitor.c | |||
@@ -355,14 +355,17 @@ out: | |||
355 | static const struct genl_ops dropmon_ops[] = { | 355 | static const struct genl_ops dropmon_ops[] = { |
356 | { | 356 | { |
357 | .cmd = NET_DM_CMD_CONFIG, | 357 | .cmd = NET_DM_CMD_CONFIG, |
358 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
358 | .doit = net_dm_cmd_config, | 359 | .doit = net_dm_cmd_config, |
359 | }, | 360 | }, |
360 | { | 361 | { |
361 | .cmd = NET_DM_CMD_START, | 362 | .cmd = NET_DM_CMD_START, |
363 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
362 | .doit = net_dm_cmd_trace, | 364 | .doit = net_dm_cmd_trace, |
363 | }, | 365 | }, |
364 | { | 366 | { |
365 | .cmd = NET_DM_CMD_STOP, | 367 | .cmd = NET_DM_CMD_STOP, |
368 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
366 | .doit = net_dm_cmd_trace, | 369 | .doit = net_dm_cmd_trace, |
367 | }, | 370 | }, |
368 | }; | 371 | }; |
diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c index c2d5a368d6d8..8f8337f893ba 100644 --- a/net/hsr/hsr_netlink.c +++ b/net/hsr/hsr_netlink.c | |||
@@ -437,12 +437,14 @@ fail: | |||
437 | static const struct genl_ops hsr_ops[] = { | 437 | static const struct genl_ops hsr_ops[] = { |
438 | { | 438 | { |
439 | .cmd = HSR_C_GET_NODE_STATUS, | 439 | .cmd = HSR_C_GET_NODE_STATUS, |
440 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
440 | .flags = 0, | 441 | .flags = 0, |
441 | .doit = hsr_get_node_status, | 442 | .doit = hsr_get_node_status, |
442 | .dumpit = NULL, | 443 | .dumpit = NULL, |
443 | }, | 444 | }, |
444 | { | 445 | { |
445 | .cmd = HSR_C_GET_NODE_LIST, | 446 | .cmd = HSR_C_GET_NODE_LIST, |
447 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
446 | .flags = 0, | 448 | .flags = 0, |
447 | .doit = hsr_get_node_list, | 449 | .doit = hsr_get_node_list, |
448 | .dumpit = NULL, | 450 | .dumpit = NULL, |
diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c index 4218304cb201..e4c4174f9efb 100644 --- a/net/ieee802154/nl802154.c +++ b/net/ieee802154/nl802154.c | |||
@@ -2209,6 +2209,7 @@ static void nl802154_post_doit(const struct genl_ops *ops, struct sk_buff *skb, | |||
2209 | static const struct genl_ops nl802154_ops[] = { | 2209 | static const struct genl_ops nl802154_ops[] = { |
2210 | { | 2210 | { |
2211 | .cmd = NL802154_CMD_GET_WPAN_PHY, | 2211 | .cmd = NL802154_CMD_GET_WPAN_PHY, |
2212 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2212 | .doit = nl802154_get_wpan_phy, | 2213 | .doit = nl802154_get_wpan_phy, |
2213 | .dumpit = nl802154_dump_wpan_phy, | 2214 | .dumpit = nl802154_dump_wpan_phy, |
2214 | .done = nl802154_dump_wpan_phy_done, | 2215 | .done = nl802154_dump_wpan_phy_done, |
@@ -2218,6 +2219,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2218 | }, | 2219 | }, |
2219 | { | 2220 | { |
2220 | .cmd = NL802154_CMD_GET_INTERFACE, | 2221 | .cmd = NL802154_CMD_GET_INTERFACE, |
2222 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2221 | .doit = nl802154_get_interface, | 2223 | .doit = nl802154_get_interface, |
2222 | .dumpit = nl802154_dump_interface, | 2224 | .dumpit = nl802154_dump_interface, |
2223 | /* can be retrieved by unprivileged users */ | 2225 | /* can be retrieved by unprivileged users */ |
@@ -2226,6 +2228,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2226 | }, | 2228 | }, |
2227 | { | 2229 | { |
2228 | .cmd = NL802154_CMD_NEW_INTERFACE, | 2230 | .cmd = NL802154_CMD_NEW_INTERFACE, |
2231 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2229 | .doit = nl802154_new_interface, | 2232 | .doit = nl802154_new_interface, |
2230 | .flags = GENL_ADMIN_PERM, | 2233 | .flags = GENL_ADMIN_PERM, |
2231 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | | 2234 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | |
@@ -2233,6 +2236,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2233 | }, | 2236 | }, |
2234 | { | 2237 | { |
2235 | .cmd = NL802154_CMD_DEL_INTERFACE, | 2238 | .cmd = NL802154_CMD_DEL_INTERFACE, |
2239 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2236 | .doit = nl802154_del_interface, | 2240 | .doit = nl802154_del_interface, |
2237 | .flags = GENL_ADMIN_PERM, | 2241 | .flags = GENL_ADMIN_PERM, |
2238 | .internal_flags = NL802154_FLAG_NEED_WPAN_DEV | | 2242 | .internal_flags = NL802154_FLAG_NEED_WPAN_DEV | |
@@ -2240,6 +2244,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2240 | }, | 2244 | }, |
2241 | { | 2245 | { |
2242 | .cmd = NL802154_CMD_SET_CHANNEL, | 2246 | .cmd = NL802154_CMD_SET_CHANNEL, |
2247 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2243 | .doit = nl802154_set_channel, | 2248 | .doit = nl802154_set_channel, |
2244 | .flags = GENL_ADMIN_PERM, | 2249 | .flags = GENL_ADMIN_PERM, |
2245 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | | 2250 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | |
@@ -2247,6 +2252,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2247 | }, | 2252 | }, |
2248 | { | 2253 | { |
2249 | .cmd = NL802154_CMD_SET_CCA_MODE, | 2254 | .cmd = NL802154_CMD_SET_CCA_MODE, |
2255 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2250 | .doit = nl802154_set_cca_mode, | 2256 | .doit = nl802154_set_cca_mode, |
2251 | .flags = GENL_ADMIN_PERM, | 2257 | .flags = GENL_ADMIN_PERM, |
2252 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | | 2258 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | |
@@ -2254,6 +2260,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2254 | }, | 2260 | }, |
2255 | { | 2261 | { |
2256 | .cmd = NL802154_CMD_SET_CCA_ED_LEVEL, | 2262 | .cmd = NL802154_CMD_SET_CCA_ED_LEVEL, |
2263 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2257 | .doit = nl802154_set_cca_ed_level, | 2264 | .doit = nl802154_set_cca_ed_level, |
2258 | .flags = GENL_ADMIN_PERM, | 2265 | .flags = GENL_ADMIN_PERM, |
2259 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | | 2266 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | |
@@ -2261,6 +2268,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2261 | }, | 2268 | }, |
2262 | { | 2269 | { |
2263 | .cmd = NL802154_CMD_SET_TX_POWER, | 2270 | .cmd = NL802154_CMD_SET_TX_POWER, |
2271 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2264 | .doit = nl802154_set_tx_power, | 2272 | .doit = nl802154_set_tx_power, |
2265 | .flags = GENL_ADMIN_PERM, | 2273 | .flags = GENL_ADMIN_PERM, |
2266 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | | 2274 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | |
@@ -2268,6 +2276,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2268 | }, | 2276 | }, |
2269 | { | 2277 | { |
2270 | .cmd = NL802154_CMD_SET_WPAN_PHY_NETNS, | 2278 | .cmd = NL802154_CMD_SET_WPAN_PHY_NETNS, |
2279 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2271 | .doit = nl802154_wpan_phy_netns, | 2280 | .doit = nl802154_wpan_phy_netns, |
2272 | .flags = GENL_ADMIN_PERM, | 2281 | .flags = GENL_ADMIN_PERM, |
2273 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | | 2282 | .internal_flags = NL802154_FLAG_NEED_WPAN_PHY | |
@@ -2275,6 +2284,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2275 | }, | 2284 | }, |
2276 | { | 2285 | { |
2277 | .cmd = NL802154_CMD_SET_PAN_ID, | 2286 | .cmd = NL802154_CMD_SET_PAN_ID, |
2287 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2278 | .doit = nl802154_set_pan_id, | 2288 | .doit = nl802154_set_pan_id, |
2279 | .flags = GENL_ADMIN_PERM, | 2289 | .flags = GENL_ADMIN_PERM, |
2280 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2290 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2282,6 +2292,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2282 | }, | 2292 | }, |
2283 | { | 2293 | { |
2284 | .cmd = NL802154_CMD_SET_SHORT_ADDR, | 2294 | .cmd = NL802154_CMD_SET_SHORT_ADDR, |
2295 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2285 | .doit = nl802154_set_short_addr, | 2296 | .doit = nl802154_set_short_addr, |
2286 | .flags = GENL_ADMIN_PERM, | 2297 | .flags = GENL_ADMIN_PERM, |
2287 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2298 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2289,6 +2300,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2289 | }, | 2300 | }, |
2290 | { | 2301 | { |
2291 | .cmd = NL802154_CMD_SET_BACKOFF_EXPONENT, | 2302 | .cmd = NL802154_CMD_SET_BACKOFF_EXPONENT, |
2303 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2292 | .doit = nl802154_set_backoff_exponent, | 2304 | .doit = nl802154_set_backoff_exponent, |
2293 | .flags = GENL_ADMIN_PERM, | 2305 | .flags = GENL_ADMIN_PERM, |
2294 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2306 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2296,6 +2308,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2296 | }, | 2308 | }, |
2297 | { | 2309 | { |
2298 | .cmd = NL802154_CMD_SET_MAX_CSMA_BACKOFFS, | 2310 | .cmd = NL802154_CMD_SET_MAX_CSMA_BACKOFFS, |
2311 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2299 | .doit = nl802154_set_max_csma_backoffs, | 2312 | .doit = nl802154_set_max_csma_backoffs, |
2300 | .flags = GENL_ADMIN_PERM, | 2313 | .flags = GENL_ADMIN_PERM, |
2301 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2314 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2303,6 +2316,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2303 | }, | 2316 | }, |
2304 | { | 2317 | { |
2305 | .cmd = NL802154_CMD_SET_MAX_FRAME_RETRIES, | 2318 | .cmd = NL802154_CMD_SET_MAX_FRAME_RETRIES, |
2319 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2306 | .doit = nl802154_set_max_frame_retries, | 2320 | .doit = nl802154_set_max_frame_retries, |
2307 | .flags = GENL_ADMIN_PERM, | 2321 | .flags = GENL_ADMIN_PERM, |
2308 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2322 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2310,6 +2324,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2310 | }, | 2324 | }, |
2311 | { | 2325 | { |
2312 | .cmd = NL802154_CMD_SET_LBT_MODE, | 2326 | .cmd = NL802154_CMD_SET_LBT_MODE, |
2327 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2313 | .doit = nl802154_set_lbt_mode, | 2328 | .doit = nl802154_set_lbt_mode, |
2314 | .flags = GENL_ADMIN_PERM, | 2329 | .flags = GENL_ADMIN_PERM, |
2315 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2330 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2317,6 +2332,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2317 | }, | 2332 | }, |
2318 | { | 2333 | { |
2319 | .cmd = NL802154_CMD_SET_ACKREQ_DEFAULT, | 2334 | .cmd = NL802154_CMD_SET_ACKREQ_DEFAULT, |
2335 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2320 | .doit = nl802154_set_ackreq_default, | 2336 | .doit = nl802154_set_ackreq_default, |
2321 | .flags = GENL_ADMIN_PERM, | 2337 | .flags = GENL_ADMIN_PERM, |
2322 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2338 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2325,6 +2341,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2325 | #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL | 2341 | #ifdef CONFIG_IEEE802154_NL802154_EXPERIMENTAL |
2326 | { | 2342 | { |
2327 | .cmd = NL802154_CMD_SET_SEC_PARAMS, | 2343 | .cmd = NL802154_CMD_SET_SEC_PARAMS, |
2344 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2328 | .doit = nl802154_set_llsec_params, | 2345 | .doit = nl802154_set_llsec_params, |
2329 | .flags = GENL_ADMIN_PERM, | 2346 | .flags = GENL_ADMIN_PERM, |
2330 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2347 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2332,6 +2349,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2332 | }, | 2349 | }, |
2333 | { | 2350 | { |
2334 | .cmd = NL802154_CMD_GET_SEC_KEY, | 2351 | .cmd = NL802154_CMD_GET_SEC_KEY, |
2352 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2335 | /* TODO .doit by matching key id? */ | 2353 | /* TODO .doit by matching key id? */ |
2336 | .dumpit = nl802154_dump_llsec_key, | 2354 | .dumpit = nl802154_dump_llsec_key, |
2337 | .flags = GENL_ADMIN_PERM, | 2355 | .flags = GENL_ADMIN_PERM, |
@@ -2340,6 +2358,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2340 | }, | 2358 | }, |
2341 | { | 2359 | { |
2342 | .cmd = NL802154_CMD_NEW_SEC_KEY, | 2360 | .cmd = NL802154_CMD_NEW_SEC_KEY, |
2361 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2343 | .doit = nl802154_add_llsec_key, | 2362 | .doit = nl802154_add_llsec_key, |
2344 | .flags = GENL_ADMIN_PERM, | 2363 | .flags = GENL_ADMIN_PERM, |
2345 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2364 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2347,6 +2366,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2347 | }, | 2366 | }, |
2348 | { | 2367 | { |
2349 | .cmd = NL802154_CMD_DEL_SEC_KEY, | 2368 | .cmd = NL802154_CMD_DEL_SEC_KEY, |
2369 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2350 | .doit = nl802154_del_llsec_key, | 2370 | .doit = nl802154_del_llsec_key, |
2351 | .flags = GENL_ADMIN_PERM, | 2371 | .flags = GENL_ADMIN_PERM, |
2352 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2372 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2355,6 +2375,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2355 | /* TODO unique identifier must short+pan OR extended_addr */ | 2375 | /* TODO unique identifier must short+pan OR extended_addr */ |
2356 | { | 2376 | { |
2357 | .cmd = NL802154_CMD_GET_SEC_DEV, | 2377 | .cmd = NL802154_CMD_GET_SEC_DEV, |
2378 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2358 | /* TODO .doit by matching extended_addr? */ | 2379 | /* TODO .doit by matching extended_addr? */ |
2359 | .dumpit = nl802154_dump_llsec_dev, | 2380 | .dumpit = nl802154_dump_llsec_dev, |
2360 | .flags = GENL_ADMIN_PERM, | 2381 | .flags = GENL_ADMIN_PERM, |
@@ -2363,6 +2384,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2363 | }, | 2384 | }, |
2364 | { | 2385 | { |
2365 | .cmd = NL802154_CMD_NEW_SEC_DEV, | 2386 | .cmd = NL802154_CMD_NEW_SEC_DEV, |
2387 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2366 | .doit = nl802154_add_llsec_dev, | 2388 | .doit = nl802154_add_llsec_dev, |
2367 | .flags = GENL_ADMIN_PERM, | 2389 | .flags = GENL_ADMIN_PERM, |
2368 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2390 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2370,6 +2392,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2370 | }, | 2392 | }, |
2371 | { | 2393 | { |
2372 | .cmd = NL802154_CMD_DEL_SEC_DEV, | 2394 | .cmd = NL802154_CMD_DEL_SEC_DEV, |
2395 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2373 | .doit = nl802154_del_llsec_dev, | 2396 | .doit = nl802154_del_llsec_dev, |
2374 | .flags = GENL_ADMIN_PERM, | 2397 | .flags = GENL_ADMIN_PERM, |
2375 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2398 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2378,6 +2401,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2378 | /* TODO remove complete devkey, put it as nested? */ | 2401 | /* TODO remove complete devkey, put it as nested? */ |
2379 | { | 2402 | { |
2380 | .cmd = NL802154_CMD_GET_SEC_DEVKEY, | 2403 | .cmd = NL802154_CMD_GET_SEC_DEVKEY, |
2404 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2381 | /* TODO doit by matching ??? */ | 2405 | /* TODO doit by matching ??? */ |
2382 | .dumpit = nl802154_dump_llsec_devkey, | 2406 | .dumpit = nl802154_dump_llsec_devkey, |
2383 | .flags = GENL_ADMIN_PERM, | 2407 | .flags = GENL_ADMIN_PERM, |
@@ -2386,6 +2410,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2386 | }, | 2410 | }, |
2387 | { | 2411 | { |
2388 | .cmd = NL802154_CMD_NEW_SEC_DEVKEY, | 2412 | .cmd = NL802154_CMD_NEW_SEC_DEVKEY, |
2413 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2389 | .doit = nl802154_add_llsec_devkey, | 2414 | .doit = nl802154_add_llsec_devkey, |
2390 | .flags = GENL_ADMIN_PERM, | 2415 | .flags = GENL_ADMIN_PERM, |
2391 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2416 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2393,6 +2418,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2393 | }, | 2418 | }, |
2394 | { | 2419 | { |
2395 | .cmd = NL802154_CMD_DEL_SEC_DEVKEY, | 2420 | .cmd = NL802154_CMD_DEL_SEC_DEVKEY, |
2421 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2396 | .doit = nl802154_del_llsec_devkey, | 2422 | .doit = nl802154_del_llsec_devkey, |
2397 | .flags = GENL_ADMIN_PERM, | 2423 | .flags = GENL_ADMIN_PERM, |
2398 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2424 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2400,6 +2426,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2400 | }, | 2426 | }, |
2401 | { | 2427 | { |
2402 | .cmd = NL802154_CMD_GET_SEC_LEVEL, | 2428 | .cmd = NL802154_CMD_GET_SEC_LEVEL, |
2429 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2403 | /* TODO .doit by matching frame_type? */ | 2430 | /* TODO .doit by matching frame_type? */ |
2404 | .dumpit = nl802154_dump_llsec_seclevel, | 2431 | .dumpit = nl802154_dump_llsec_seclevel, |
2405 | .flags = GENL_ADMIN_PERM, | 2432 | .flags = GENL_ADMIN_PERM, |
@@ -2408,6 +2435,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2408 | }, | 2435 | }, |
2409 | { | 2436 | { |
2410 | .cmd = NL802154_CMD_NEW_SEC_LEVEL, | 2437 | .cmd = NL802154_CMD_NEW_SEC_LEVEL, |
2438 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2411 | .doit = nl802154_add_llsec_seclevel, | 2439 | .doit = nl802154_add_llsec_seclevel, |
2412 | .flags = GENL_ADMIN_PERM, | 2440 | .flags = GENL_ADMIN_PERM, |
2413 | .internal_flags = NL802154_FLAG_NEED_NETDEV | | 2441 | .internal_flags = NL802154_FLAG_NEED_NETDEV | |
@@ -2415,6 +2443,7 @@ static const struct genl_ops nl802154_ops[] = { | |||
2415 | }, | 2443 | }, |
2416 | { | 2444 | { |
2417 | .cmd = NL802154_CMD_DEL_SEC_LEVEL, | 2445 | .cmd = NL802154_CMD_DEL_SEC_LEVEL, |
2446 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2418 | /* TODO match frame_type only? */ | 2447 | /* TODO match frame_type only? */ |
2419 | .doit = nl802154_del_llsec_seclevel, | 2448 | .doit = nl802154_del_llsec_seclevel, |
2420 | .flags = GENL_ADMIN_PERM, | 2449 | .flags = GENL_ADMIN_PERM, |
diff --git a/net/ipv4/fou.c b/net/ipv4/fou.c index 1ca1586a7e46..ca95051317ed 100644 --- a/net/ipv4/fou.c +++ b/net/ipv4/fou.c | |||
@@ -913,16 +913,19 @@ static int fou_nl_dump(struct sk_buff *skb, struct netlink_callback *cb) | |||
913 | static const struct genl_ops fou_nl_ops[] = { | 913 | static const struct genl_ops fou_nl_ops[] = { |
914 | { | 914 | { |
915 | .cmd = FOU_CMD_ADD, | 915 | .cmd = FOU_CMD_ADD, |
916 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
916 | .doit = fou_nl_cmd_add_port, | 917 | .doit = fou_nl_cmd_add_port, |
917 | .flags = GENL_ADMIN_PERM, | 918 | .flags = GENL_ADMIN_PERM, |
918 | }, | 919 | }, |
919 | { | 920 | { |
920 | .cmd = FOU_CMD_DEL, | 921 | .cmd = FOU_CMD_DEL, |
922 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
921 | .doit = fou_nl_cmd_rm_port, | 923 | .doit = fou_nl_cmd_rm_port, |
922 | .flags = GENL_ADMIN_PERM, | 924 | .flags = GENL_ADMIN_PERM, |
923 | }, | 925 | }, |
924 | { | 926 | { |
925 | .cmd = FOU_CMD_GET, | 927 | .cmd = FOU_CMD_GET, |
928 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
926 | .doit = fou_nl_cmd_get_port, | 929 | .doit = fou_nl_cmd_get_port, |
927 | .dumpit = fou_nl_dump, | 930 | .dumpit = fou_nl_dump, |
928 | }, | 931 | }, |
diff --git a/net/ipv4/tcp_metrics.c b/net/ipv4/tcp_metrics.c index 9a08bfb0672c..f262f2cace29 100644 --- a/net/ipv4/tcp_metrics.c +++ b/net/ipv4/tcp_metrics.c | |||
@@ -951,11 +951,13 @@ static int tcp_metrics_nl_cmd_del(struct sk_buff *skb, struct genl_info *info) | |||
951 | static const struct genl_ops tcp_metrics_nl_ops[] = { | 951 | static const struct genl_ops tcp_metrics_nl_ops[] = { |
952 | { | 952 | { |
953 | .cmd = TCP_METRICS_CMD_GET, | 953 | .cmd = TCP_METRICS_CMD_GET, |
954 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
954 | .doit = tcp_metrics_nl_cmd_get, | 955 | .doit = tcp_metrics_nl_cmd_get, |
955 | .dumpit = tcp_metrics_nl_dump, | 956 | .dumpit = tcp_metrics_nl_dump, |
956 | }, | 957 | }, |
957 | { | 958 | { |
958 | .cmd = TCP_METRICS_CMD_DEL, | 959 | .cmd = TCP_METRICS_CMD_DEL, |
960 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
959 | .doit = tcp_metrics_nl_cmd_del, | 961 | .doit = tcp_metrics_nl_cmd_del, |
960 | .flags = GENL_ADMIN_PERM, | 962 | .flags = GENL_ADMIN_PERM, |
961 | }, | 963 | }, |
diff --git a/net/ipv6/ila/ila_main.c b/net/ipv6/ila/ila_main.c index 8d31a5066d0c..257d2b681246 100644 --- a/net/ipv6/ila/ila_main.c +++ b/net/ipv6/ila/ila_main.c | |||
@@ -16,21 +16,25 @@ static const struct nla_policy ila_nl_policy[ILA_ATTR_MAX + 1] = { | |||
16 | static const struct genl_ops ila_nl_ops[] = { | 16 | static const struct genl_ops ila_nl_ops[] = { |
17 | { | 17 | { |
18 | .cmd = ILA_CMD_ADD, | 18 | .cmd = ILA_CMD_ADD, |
19 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
19 | .doit = ila_xlat_nl_cmd_add_mapping, | 20 | .doit = ila_xlat_nl_cmd_add_mapping, |
20 | .flags = GENL_ADMIN_PERM, | 21 | .flags = GENL_ADMIN_PERM, |
21 | }, | 22 | }, |
22 | { | 23 | { |
23 | .cmd = ILA_CMD_DEL, | 24 | .cmd = ILA_CMD_DEL, |
25 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
24 | .doit = ila_xlat_nl_cmd_del_mapping, | 26 | .doit = ila_xlat_nl_cmd_del_mapping, |
25 | .flags = GENL_ADMIN_PERM, | 27 | .flags = GENL_ADMIN_PERM, |
26 | }, | 28 | }, |
27 | { | 29 | { |
28 | .cmd = ILA_CMD_FLUSH, | 30 | .cmd = ILA_CMD_FLUSH, |
31 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
29 | .doit = ila_xlat_nl_cmd_flush, | 32 | .doit = ila_xlat_nl_cmd_flush, |
30 | .flags = GENL_ADMIN_PERM, | 33 | .flags = GENL_ADMIN_PERM, |
31 | }, | 34 | }, |
32 | { | 35 | { |
33 | .cmd = ILA_CMD_GET, | 36 | .cmd = ILA_CMD_GET, |
37 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
34 | .doit = ila_xlat_nl_cmd_get_mapping, | 38 | .doit = ila_xlat_nl_cmd_get_mapping, |
35 | .start = ila_xlat_nl_dump_start, | 39 | .start = ila_xlat_nl_dump_start, |
36 | .dumpit = ila_xlat_nl_dump, | 40 | .dumpit = ila_xlat_nl_dump, |
diff --git a/net/ipv6/seg6.c b/net/ipv6/seg6.c index ceff773471e7..0c5479ef9b38 100644 --- a/net/ipv6/seg6.c +++ b/net/ipv6/seg6.c | |||
@@ -398,11 +398,13 @@ static struct pernet_operations ip6_segments_ops = { | |||
398 | static const struct genl_ops seg6_genl_ops[] = { | 398 | static const struct genl_ops seg6_genl_ops[] = { |
399 | { | 399 | { |
400 | .cmd = SEG6_CMD_SETHMAC, | 400 | .cmd = SEG6_CMD_SETHMAC, |
401 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
401 | .doit = seg6_genl_sethmac, | 402 | .doit = seg6_genl_sethmac, |
402 | .flags = GENL_ADMIN_PERM, | 403 | .flags = GENL_ADMIN_PERM, |
403 | }, | 404 | }, |
404 | { | 405 | { |
405 | .cmd = SEG6_CMD_DUMPHMAC, | 406 | .cmd = SEG6_CMD_DUMPHMAC, |
407 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
406 | .start = seg6_genl_dumphmac_start, | 408 | .start = seg6_genl_dumphmac_start, |
407 | .dumpit = seg6_genl_dumphmac, | 409 | .dumpit = seg6_genl_dumphmac, |
408 | .done = seg6_genl_dumphmac_done, | 410 | .done = seg6_genl_dumphmac_done, |
@@ -410,11 +412,13 @@ static const struct genl_ops seg6_genl_ops[] = { | |||
410 | }, | 412 | }, |
411 | { | 413 | { |
412 | .cmd = SEG6_CMD_SET_TUNSRC, | 414 | .cmd = SEG6_CMD_SET_TUNSRC, |
415 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
413 | .doit = seg6_genl_set_tunsrc, | 416 | .doit = seg6_genl_set_tunsrc, |
414 | .flags = GENL_ADMIN_PERM, | 417 | .flags = GENL_ADMIN_PERM, |
415 | }, | 418 | }, |
416 | { | 419 | { |
417 | .cmd = SEG6_CMD_GET_TUNSRC, | 420 | .cmd = SEG6_CMD_GET_TUNSRC, |
421 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
418 | .doit = seg6_genl_get_tunsrc, | 422 | .doit = seg6_genl_get_tunsrc, |
419 | .flags = GENL_ADMIN_PERM, | 423 | .flags = GENL_ADMIN_PERM, |
420 | }, | 424 | }, |
diff --git a/net/l2tp/l2tp_netlink.c b/net/l2tp/l2tp_netlink.c index c31b50cc48d9..6acc7f869b0c 100644 --- a/net/l2tp/l2tp_netlink.c +++ b/net/l2tp/l2tp_netlink.c | |||
@@ -915,47 +915,56 @@ static const struct nla_policy l2tp_nl_policy[L2TP_ATTR_MAX + 1] = { | |||
915 | static const struct genl_ops l2tp_nl_ops[] = { | 915 | static const struct genl_ops l2tp_nl_ops[] = { |
916 | { | 916 | { |
917 | .cmd = L2TP_CMD_NOOP, | 917 | .cmd = L2TP_CMD_NOOP, |
918 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
918 | .doit = l2tp_nl_cmd_noop, | 919 | .doit = l2tp_nl_cmd_noop, |
919 | /* can be retrieved by unprivileged users */ | 920 | /* can be retrieved by unprivileged users */ |
920 | }, | 921 | }, |
921 | { | 922 | { |
922 | .cmd = L2TP_CMD_TUNNEL_CREATE, | 923 | .cmd = L2TP_CMD_TUNNEL_CREATE, |
924 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
923 | .doit = l2tp_nl_cmd_tunnel_create, | 925 | .doit = l2tp_nl_cmd_tunnel_create, |
924 | .flags = GENL_ADMIN_PERM, | 926 | .flags = GENL_ADMIN_PERM, |
925 | }, | 927 | }, |
926 | { | 928 | { |
927 | .cmd = L2TP_CMD_TUNNEL_DELETE, | 929 | .cmd = L2TP_CMD_TUNNEL_DELETE, |
930 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
928 | .doit = l2tp_nl_cmd_tunnel_delete, | 931 | .doit = l2tp_nl_cmd_tunnel_delete, |
929 | .flags = GENL_ADMIN_PERM, | 932 | .flags = GENL_ADMIN_PERM, |
930 | }, | 933 | }, |
931 | { | 934 | { |
932 | .cmd = L2TP_CMD_TUNNEL_MODIFY, | 935 | .cmd = L2TP_CMD_TUNNEL_MODIFY, |
936 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
933 | .doit = l2tp_nl_cmd_tunnel_modify, | 937 | .doit = l2tp_nl_cmd_tunnel_modify, |
934 | .flags = GENL_ADMIN_PERM, | 938 | .flags = GENL_ADMIN_PERM, |
935 | }, | 939 | }, |
936 | { | 940 | { |
937 | .cmd = L2TP_CMD_TUNNEL_GET, | 941 | .cmd = L2TP_CMD_TUNNEL_GET, |
942 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
938 | .doit = l2tp_nl_cmd_tunnel_get, | 943 | .doit = l2tp_nl_cmd_tunnel_get, |
939 | .dumpit = l2tp_nl_cmd_tunnel_dump, | 944 | .dumpit = l2tp_nl_cmd_tunnel_dump, |
940 | .flags = GENL_ADMIN_PERM, | 945 | .flags = GENL_ADMIN_PERM, |
941 | }, | 946 | }, |
942 | { | 947 | { |
943 | .cmd = L2TP_CMD_SESSION_CREATE, | 948 | .cmd = L2TP_CMD_SESSION_CREATE, |
949 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
944 | .doit = l2tp_nl_cmd_session_create, | 950 | .doit = l2tp_nl_cmd_session_create, |
945 | .flags = GENL_ADMIN_PERM, | 951 | .flags = GENL_ADMIN_PERM, |
946 | }, | 952 | }, |
947 | { | 953 | { |
948 | .cmd = L2TP_CMD_SESSION_DELETE, | 954 | .cmd = L2TP_CMD_SESSION_DELETE, |
955 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
949 | .doit = l2tp_nl_cmd_session_delete, | 956 | .doit = l2tp_nl_cmd_session_delete, |
950 | .flags = GENL_ADMIN_PERM, | 957 | .flags = GENL_ADMIN_PERM, |
951 | }, | 958 | }, |
952 | { | 959 | { |
953 | .cmd = L2TP_CMD_SESSION_MODIFY, | 960 | .cmd = L2TP_CMD_SESSION_MODIFY, |
961 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
954 | .doit = l2tp_nl_cmd_session_modify, | 962 | .doit = l2tp_nl_cmd_session_modify, |
955 | .flags = GENL_ADMIN_PERM, | 963 | .flags = GENL_ADMIN_PERM, |
956 | }, | 964 | }, |
957 | { | 965 | { |
958 | .cmd = L2TP_CMD_SESSION_GET, | 966 | .cmd = L2TP_CMD_SESSION_GET, |
967 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
959 | .doit = l2tp_nl_cmd_session_get, | 968 | .doit = l2tp_nl_cmd_session_get, |
960 | .dumpit = l2tp_nl_cmd_session_dump, | 969 | .dumpit = l2tp_nl_cmd_session_dump, |
961 | .flags = GENL_ADMIN_PERM, | 970 | .flags = GENL_ADMIN_PERM, |
diff --git a/net/ncsi/ncsi-netlink.c b/net/ncsi/ncsi-netlink.c index 37759c88ef02..7fc4feddafa3 100644 --- a/net/ncsi/ncsi-netlink.c +++ b/net/ncsi/ncsi-netlink.c | |||
@@ -723,32 +723,38 @@ static int ncsi_set_channel_mask_nl(struct sk_buff *msg, | |||
723 | static const struct genl_ops ncsi_ops[] = { | 723 | static const struct genl_ops ncsi_ops[] = { |
724 | { | 724 | { |
725 | .cmd = NCSI_CMD_PKG_INFO, | 725 | .cmd = NCSI_CMD_PKG_INFO, |
726 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
726 | .doit = ncsi_pkg_info_nl, | 727 | .doit = ncsi_pkg_info_nl, |
727 | .dumpit = ncsi_pkg_info_all_nl, | 728 | .dumpit = ncsi_pkg_info_all_nl, |
728 | .flags = 0, | 729 | .flags = 0, |
729 | }, | 730 | }, |
730 | { | 731 | { |
731 | .cmd = NCSI_CMD_SET_INTERFACE, | 732 | .cmd = NCSI_CMD_SET_INTERFACE, |
733 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
732 | .doit = ncsi_set_interface_nl, | 734 | .doit = ncsi_set_interface_nl, |
733 | .flags = GENL_ADMIN_PERM, | 735 | .flags = GENL_ADMIN_PERM, |
734 | }, | 736 | }, |
735 | { | 737 | { |
736 | .cmd = NCSI_CMD_CLEAR_INTERFACE, | 738 | .cmd = NCSI_CMD_CLEAR_INTERFACE, |
739 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
737 | .doit = ncsi_clear_interface_nl, | 740 | .doit = ncsi_clear_interface_nl, |
738 | .flags = GENL_ADMIN_PERM, | 741 | .flags = GENL_ADMIN_PERM, |
739 | }, | 742 | }, |
740 | { | 743 | { |
741 | .cmd = NCSI_CMD_SEND_CMD, | 744 | .cmd = NCSI_CMD_SEND_CMD, |
745 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
742 | .doit = ncsi_send_cmd_nl, | 746 | .doit = ncsi_send_cmd_nl, |
743 | .flags = GENL_ADMIN_PERM, | 747 | .flags = GENL_ADMIN_PERM, |
744 | }, | 748 | }, |
745 | { | 749 | { |
746 | .cmd = NCSI_CMD_SET_PACKAGE_MASK, | 750 | .cmd = NCSI_CMD_SET_PACKAGE_MASK, |
751 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
747 | .doit = ncsi_set_package_mask_nl, | 752 | .doit = ncsi_set_package_mask_nl, |
748 | .flags = GENL_ADMIN_PERM, | 753 | .flags = GENL_ADMIN_PERM, |
749 | }, | 754 | }, |
750 | { | 755 | { |
751 | .cmd = NCSI_CMD_SET_CHANNEL_MASK, | 756 | .cmd = NCSI_CMD_SET_CHANNEL_MASK, |
757 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
752 | .doit = ncsi_set_channel_mask_nl, | 758 | .doit = ncsi_set_channel_mask_nl, |
753 | .flags = GENL_ADMIN_PERM, | 759 | .flags = GENL_ADMIN_PERM, |
754 | }, | 760 | }, |
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c index 24bb1a7b590c..0e887159425c 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c | |||
@@ -3802,82 +3802,98 @@ out: | |||
3802 | static const struct genl_ops ip_vs_genl_ops[] = { | 3802 | static const struct genl_ops ip_vs_genl_ops[] = { |
3803 | { | 3803 | { |
3804 | .cmd = IPVS_CMD_NEW_SERVICE, | 3804 | .cmd = IPVS_CMD_NEW_SERVICE, |
3805 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3805 | .flags = GENL_ADMIN_PERM, | 3806 | .flags = GENL_ADMIN_PERM, |
3806 | .doit = ip_vs_genl_set_cmd, | 3807 | .doit = ip_vs_genl_set_cmd, |
3807 | }, | 3808 | }, |
3808 | { | 3809 | { |
3809 | .cmd = IPVS_CMD_SET_SERVICE, | 3810 | .cmd = IPVS_CMD_SET_SERVICE, |
3811 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3810 | .flags = GENL_ADMIN_PERM, | 3812 | .flags = GENL_ADMIN_PERM, |
3811 | .doit = ip_vs_genl_set_cmd, | 3813 | .doit = ip_vs_genl_set_cmd, |
3812 | }, | 3814 | }, |
3813 | { | 3815 | { |
3814 | .cmd = IPVS_CMD_DEL_SERVICE, | 3816 | .cmd = IPVS_CMD_DEL_SERVICE, |
3817 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3815 | .flags = GENL_ADMIN_PERM, | 3818 | .flags = GENL_ADMIN_PERM, |
3816 | .doit = ip_vs_genl_set_cmd, | 3819 | .doit = ip_vs_genl_set_cmd, |
3817 | }, | 3820 | }, |
3818 | { | 3821 | { |
3819 | .cmd = IPVS_CMD_GET_SERVICE, | 3822 | .cmd = IPVS_CMD_GET_SERVICE, |
3823 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3820 | .flags = GENL_ADMIN_PERM, | 3824 | .flags = GENL_ADMIN_PERM, |
3821 | .doit = ip_vs_genl_get_cmd, | 3825 | .doit = ip_vs_genl_get_cmd, |
3822 | .dumpit = ip_vs_genl_dump_services, | 3826 | .dumpit = ip_vs_genl_dump_services, |
3823 | }, | 3827 | }, |
3824 | { | 3828 | { |
3825 | .cmd = IPVS_CMD_NEW_DEST, | 3829 | .cmd = IPVS_CMD_NEW_DEST, |
3830 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3826 | .flags = GENL_ADMIN_PERM, | 3831 | .flags = GENL_ADMIN_PERM, |
3827 | .doit = ip_vs_genl_set_cmd, | 3832 | .doit = ip_vs_genl_set_cmd, |
3828 | }, | 3833 | }, |
3829 | { | 3834 | { |
3830 | .cmd = IPVS_CMD_SET_DEST, | 3835 | .cmd = IPVS_CMD_SET_DEST, |
3836 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3831 | .flags = GENL_ADMIN_PERM, | 3837 | .flags = GENL_ADMIN_PERM, |
3832 | .doit = ip_vs_genl_set_cmd, | 3838 | .doit = ip_vs_genl_set_cmd, |
3833 | }, | 3839 | }, |
3834 | { | 3840 | { |
3835 | .cmd = IPVS_CMD_DEL_DEST, | 3841 | .cmd = IPVS_CMD_DEL_DEST, |
3842 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3836 | .flags = GENL_ADMIN_PERM, | 3843 | .flags = GENL_ADMIN_PERM, |
3837 | .doit = ip_vs_genl_set_cmd, | 3844 | .doit = ip_vs_genl_set_cmd, |
3838 | }, | 3845 | }, |
3839 | { | 3846 | { |
3840 | .cmd = IPVS_CMD_GET_DEST, | 3847 | .cmd = IPVS_CMD_GET_DEST, |
3848 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3841 | .flags = GENL_ADMIN_PERM, | 3849 | .flags = GENL_ADMIN_PERM, |
3842 | .dumpit = ip_vs_genl_dump_dests, | 3850 | .dumpit = ip_vs_genl_dump_dests, |
3843 | }, | 3851 | }, |
3844 | { | 3852 | { |
3845 | .cmd = IPVS_CMD_NEW_DAEMON, | 3853 | .cmd = IPVS_CMD_NEW_DAEMON, |
3854 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3846 | .flags = GENL_ADMIN_PERM, | 3855 | .flags = GENL_ADMIN_PERM, |
3847 | .doit = ip_vs_genl_set_daemon, | 3856 | .doit = ip_vs_genl_set_daemon, |
3848 | }, | 3857 | }, |
3849 | { | 3858 | { |
3850 | .cmd = IPVS_CMD_DEL_DAEMON, | 3859 | .cmd = IPVS_CMD_DEL_DAEMON, |
3860 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3851 | .flags = GENL_ADMIN_PERM, | 3861 | .flags = GENL_ADMIN_PERM, |
3852 | .doit = ip_vs_genl_set_daemon, | 3862 | .doit = ip_vs_genl_set_daemon, |
3853 | }, | 3863 | }, |
3854 | { | 3864 | { |
3855 | .cmd = IPVS_CMD_GET_DAEMON, | 3865 | .cmd = IPVS_CMD_GET_DAEMON, |
3866 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3856 | .flags = GENL_ADMIN_PERM, | 3867 | .flags = GENL_ADMIN_PERM, |
3857 | .dumpit = ip_vs_genl_dump_daemons, | 3868 | .dumpit = ip_vs_genl_dump_daemons, |
3858 | }, | 3869 | }, |
3859 | { | 3870 | { |
3860 | .cmd = IPVS_CMD_SET_CONFIG, | 3871 | .cmd = IPVS_CMD_SET_CONFIG, |
3872 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3861 | .flags = GENL_ADMIN_PERM, | 3873 | .flags = GENL_ADMIN_PERM, |
3862 | .doit = ip_vs_genl_set_cmd, | 3874 | .doit = ip_vs_genl_set_cmd, |
3863 | }, | 3875 | }, |
3864 | { | 3876 | { |
3865 | .cmd = IPVS_CMD_GET_CONFIG, | 3877 | .cmd = IPVS_CMD_GET_CONFIG, |
3878 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3866 | .flags = GENL_ADMIN_PERM, | 3879 | .flags = GENL_ADMIN_PERM, |
3867 | .doit = ip_vs_genl_get_cmd, | 3880 | .doit = ip_vs_genl_get_cmd, |
3868 | }, | 3881 | }, |
3869 | { | 3882 | { |
3870 | .cmd = IPVS_CMD_GET_INFO, | 3883 | .cmd = IPVS_CMD_GET_INFO, |
3884 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3871 | .flags = GENL_ADMIN_PERM, | 3885 | .flags = GENL_ADMIN_PERM, |
3872 | .doit = ip_vs_genl_get_cmd, | 3886 | .doit = ip_vs_genl_get_cmd, |
3873 | }, | 3887 | }, |
3874 | { | 3888 | { |
3875 | .cmd = IPVS_CMD_ZERO, | 3889 | .cmd = IPVS_CMD_ZERO, |
3890 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3876 | .flags = GENL_ADMIN_PERM, | 3891 | .flags = GENL_ADMIN_PERM, |
3877 | .doit = ip_vs_genl_set_cmd, | 3892 | .doit = ip_vs_genl_set_cmd, |
3878 | }, | 3893 | }, |
3879 | { | 3894 | { |
3880 | .cmd = IPVS_CMD_FLUSH, | 3895 | .cmd = IPVS_CMD_FLUSH, |
3896 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
3881 | .flags = GENL_ADMIN_PERM, | 3897 | .flags = GENL_ADMIN_PERM, |
3882 | .doit = ip_vs_genl_set_cmd, | 3898 | .doit = ip_vs_genl_set_cmd, |
3883 | }, | 3899 | }, |
diff --git a/net/netlabel/netlabel_calipso.c b/net/netlabel/netlabel_calipso.c index 80184513b2b2..1de87172885d 100644 --- a/net/netlabel/netlabel_calipso.c +++ b/net/netlabel/netlabel_calipso.c | |||
@@ -321,24 +321,28 @@ static int netlbl_calipso_remove(struct sk_buff *skb, struct genl_info *info) | |||
321 | static const struct genl_ops netlbl_calipso_ops[] = { | 321 | static const struct genl_ops netlbl_calipso_ops[] = { |
322 | { | 322 | { |
323 | .cmd = NLBL_CALIPSO_C_ADD, | 323 | .cmd = NLBL_CALIPSO_C_ADD, |
324 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
324 | .flags = GENL_ADMIN_PERM, | 325 | .flags = GENL_ADMIN_PERM, |
325 | .doit = netlbl_calipso_add, | 326 | .doit = netlbl_calipso_add, |
326 | .dumpit = NULL, | 327 | .dumpit = NULL, |
327 | }, | 328 | }, |
328 | { | 329 | { |
329 | .cmd = NLBL_CALIPSO_C_REMOVE, | 330 | .cmd = NLBL_CALIPSO_C_REMOVE, |
331 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
330 | .flags = GENL_ADMIN_PERM, | 332 | .flags = GENL_ADMIN_PERM, |
331 | .doit = netlbl_calipso_remove, | 333 | .doit = netlbl_calipso_remove, |
332 | .dumpit = NULL, | 334 | .dumpit = NULL, |
333 | }, | 335 | }, |
334 | { | 336 | { |
335 | .cmd = NLBL_CALIPSO_C_LIST, | 337 | .cmd = NLBL_CALIPSO_C_LIST, |
338 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
336 | .flags = 0, | 339 | .flags = 0, |
337 | .doit = netlbl_calipso_list, | 340 | .doit = netlbl_calipso_list, |
338 | .dumpit = NULL, | 341 | .dumpit = NULL, |
339 | }, | 342 | }, |
340 | { | 343 | { |
341 | .cmd = NLBL_CALIPSO_C_LISTALL, | 344 | .cmd = NLBL_CALIPSO_C_LISTALL, |
345 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
342 | .flags = 0, | 346 | .flags = 0, |
343 | .doit = NULL, | 347 | .doit = NULL, |
344 | .dumpit = netlbl_calipso_listall, | 348 | .dumpit = netlbl_calipso_listall, |
diff --git a/net/netlabel/netlabel_cipso_v4.c b/net/netlabel/netlabel_cipso_v4.c index 8d401df65928..5d1121981d0b 100644 --- a/net/netlabel/netlabel_cipso_v4.c +++ b/net/netlabel/netlabel_cipso_v4.c | |||
@@ -741,24 +741,28 @@ static int netlbl_cipsov4_remove(struct sk_buff *skb, struct genl_info *info) | |||
741 | static const struct genl_ops netlbl_cipsov4_ops[] = { | 741 | static const struct genl_ops netlbl_cipsov4_ops[] = { |
742 | { | 742 | { |
743 | .cmd = NLBL_CIPSOV4_C_ADD, | 743 | .cmd = NLBL_CIPSOV4_C_ADD, |
744 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
744 | .flags = GENL_ADMIN_PERM, | 745 | .flags = GENL_ADMIN_PERM, |
745 | .doit = netlbl_cipsov4_add, | 746 | .doit = netlbl_cipsov4_add, |
746 | .dumpit = NULL, | 747 | .dumpit = NULL, |
747 | }, | 748 | }, |
748 | { | 749 | { |
749 | .cmd = NLBL_CIPSOV4_C_REMOVE, | 750 | .cmd = NLBL_CIPSOV4_C_REMOVE, |
751 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
750 | .flags = GENL_ADMIN_PERM, | 752 | .flags = GENL_ADMIN_PERM, |
751 | .doit = netlbl_cipsov4_remove, | 753 | .doit = netlbl_cipsov4_remove, |
752 | .dumpit = NULL, | 754 | .dumpit = NULL, |
753 | }, | 755 | }, |
754 | { | 756 | { |
755 | .cmd = NLBL_CIPSOV4_C_LIST, | 757 | .cmd = NLBL_CIPSOV4_C_LIST, |
758 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
756 | .flags = 0, | 759 | .flags = 0, |
757 | .doit = netlbl_cipsov4_list, | 760 | .doit = netlbl_cipsov4_list, |
758 | .dumpit = NULL, | 761 | .dumpit = NULL, |
759 | }, | 762 | }, |
760 | { | 763 | { |
761 | .cmd = NLBL_CIPSOV4_C_LISTALL, | 764 | .cmd = NLBL_CIPSOV4_C_LISTALL, |
765 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
762 | .flags = 0, | 766 | .flags = 0, |
763 | .doit = NULL, | 767 | .doit = NULL, |
764 | .dumpit = netlbl_cipsov4_listall, | 768 | .dumpit = netlbl_cipsov4_listall, |
diff --git a/net/netlabel/netlabel_mgmt.c b/net/netlabel/netlabel_mgmt.c index c6c8a101f2ff..cae04f207782 100644 --- a/net/netlabel/netlabel_mgmt.c +++ b/net/netlabel/netlabel_mgmt.c | |||
@@ -774,48 +774,56 @@ version_failure: | |||
774 | static const struct genl_ops netlbl_mgmt_genl_ops[] = { | 774 | static const struct genl_ops netlbl_mgmt_genl_ops[] = { |
775 | { | 775 | { |
776 | .cmd = NLBL_MGMT_C_ADD, | 776 | .cmd = NLBL_MGMT_C_ADD, |
777 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
777 | .flags = GENL_ADMIN_PERM, | 778 | .flags = GENL_ADMIN_PERM, |
778 | .doit = netlbl_mgmt_add, | 779 | .doit = netlbl_mgmt_add, |
779 | .dumpit = NULL, | 780 | .dumpit = NULL, |
780 | }, | 781 | }, |
781 | { | 782 | { |
782 | .cmd = NLBL_MGMT_C_REMOVE, | 783 | .cmd = NLBL_MGMT_C_REMOVE, |
784 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
783 | .flags = GENL_ADMIN_PERM, | 785 | .flags = GENL_ADMIN_PERM, |
784 | .doit = netlbl_mgmt_remove, | 786 | .doit = netlbl_mgmt_remove, |
785 | .dumpit = NULL, | 787 | .dumpit = NULL, |
786 | }, | 788 | }, |
787 | { | 789 | { |
788 | .cmd = NLBL_MGMT_C_LISTALL, | 790 | .cmd = NLBL_MGMT_C_LISTALL, |
791 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
789 | .flags = 0, | 792 | .flags = 0, |
790 | .doit = NULL, | 793 | .doit = NULL, |
791 | .dumpit = netlbl_mgmt_listall, | 794 | .dumpit = netlbl_mgmt_listall, |
792 | }, | 795 | }, |
793 | { | 796 | { |
794 | .cmd = NLBL_MGMT_C_ADDDEF, | 797 | .cmd = NLBL_MGMT_C_ADDDEF, |
798 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
795 | .flags = GENL_ADMIN_PERM, | 799 | .flags = GENL_ADMIN_PERM, |
796 | .doit = netlbl_mgmt_adddef, | 800 | .doit = netlbl_mgmt_adddef, |
797 | .dumpit = NULL, | 801 | .dumpit = NULL, |
798 | }, | 802 | }, |
799 | { | 803 | { |
800 | .cmd = NLBL_MGMT_C_REMOVEDEF, | 804 | .cmd = NLBL_MGMT_C_REMOVEDEF, |
805 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
801 | .flags = GENL_ADMIN_PERM, | 806 | .flags = GENL_ADMIN_PERM, |
802 | .doit = netlbl_mgmt_removedef, | 807 | .doit = netlbl_mgmt_removedef, |
803 | .dumpit = NULL, | 808 | .dumpit = NULL, |
804 | }, | 809 | }, |
805 | { | 810 | { |
806 | .cmd = NLBL_MGMT_C_LISTDEF, | 811 | .cmd = NLBL_MGMT_C_LISTDEF, |
812 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
807 | .flags = 0, | 813 | .flags = 0, |
808 | .doit = netlbl_mgmt_listdef, | 814 | .doit = netlbl_mgmt_listdef, |
809 | .dumpit = NULL, | 815 | .dumpit = NULL, |
810 | }, | 816 | }, |
811 | { | 817 | { |
812 | .cmd = NLBL_MGMT_C_PROTOCOLS, | 818 | .cmd = NLBL_MGMT_C_PROTOCOLS, |
819 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
813 | .flags = 0, | 820 | .flags = 0, |
814 | .doit = NULL, | 821 | .doit = NULL, |
815 | .dumpit = netlbl_mgmt_protocols, | 822 | .dumpit = netlbl_mgmt_protocols, |
816 | }, | 823 | }, |
817 | { | 824 | { |
818 | .cmd = NLBL_MGMT_C_VERSION, | 825 | .cmd = NLBL_MGMT_C_VERSION, |
826 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
819 | .flags = 0, | 827 | .flags = 0, |
820 | .doit = netlbl_mgmt_version, | 828 | .doit = netlbl_mgmt_version, |
821 | .dumpit = NULL, | 829 | .dumpit = NULL, |
diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c index 6b1b6c2b5141..b87dd34e1835 100644 --- a/net/netlabel/netlabel_unlabeled.c +++ b/net/netlabel/netlabel_unlabeled.c | |||
@@ -1317,48 +1317,56 @@ unlabel_staticlistdef_return: | |||
1317 | static const struct genl_ops netlbl_unlabel_genl_ops[] = { | 1317 | static const struct genl_ops netlbl_unlabel_genl_ops[] = { |
1318 | { | 1318 | { |
1319 | .cmd = NLBL_UNLABEL_C_STATICADD, | 1319 | .cmd = NLBL_UNLABEL_C_STATICADD, |
1320 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1320 | .flags = GENL_ADMIN_PERM, | 1321 | .flags = GENL_ADMIN_PERM, |
1321 | .doit = netlbl_unlabel_staticadd, | 1322 | .doit = netlbl_unlabel_staticadd, |
1322 | .dumpit = NULL, | 1323 | .dumpit = NULL, |
1323 | }, | 1324 | }, |
1324 | { | 1325 | { |
1325 | .cmd = NLBL_UNLABEL_C_STATICREMOVE, | 1326 | .cmd = NLBL_UNLABEL_C_STATICREMOVE, |
1327 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1326 | .flags = GENL_ADMIN_PERM, | 1328 | .flags = GENL_ADMIN_PERM, |
1327 | .doit = netlbl_unlabel_staticremove, | 1329 | .doit = netlbl_unlabel_staticremove, |
1328 | .dumpit = NULL, | 1330 | .dumpit = NULL, |
1329 | }, | 1331 | }, |
1330 | { | 1332 | { |
1331 | .cmd = NLBL_UNLABEL_C_STATICLIST, | 1333 | .cmd = NLBL_UNLABEL_C_STATICLIST, |
1334 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1332 | .flags = 0, | 1335 | .flags = 0, |
1333 | .doit = NULL, | 1336 | .doit = NULL, |
1334 | .dumpit = netlbl_unlabel_staticlist, | 1337 | .dumpit = netlbl_unlabel_staticlist, |
1335 | }, | 1338 | }, |
1336 | { | 1339 | { |
1337 | .cmd = NLBL_UNLABEL_C_STATICADDDEF, | 1340 | .cmd = NLBL_UNLABEL_C_STATICADDDEF, |
1341 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1338 | .flags = GENL_ADMIN_PERM, | 1342 | .flags = GENL_ADMIN_PERM, |
1339 | .doit = netlbl_unlabel_staticadddef, | 1343 | .doit = netlbl_unlabel_staticadddef, |
1340 | .dumpit = NULL, | 1344 | .dumpit = NULL, |
1341 | }, | 1345 | }, |
1342 | { | 1346 | { |
1343 | .cmd = NLBL_UNLABEL_C_STATICREMOVEDEF, | 1347 | .cmd = NLBL_UNLABEL_C_STATICREMOVEDEF, |
1348 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1344 | .flags = GENL_ADMIN_PERM, | 1349 | .flags = GENL_ADMIN_PERM, |
1345 | .doit = netlbl_unlabel_staticremovedef, | 1350 | .doit = netlbl_unlabel_staticremovedef, |
1346 | .dumpit = NULL, | 1351 | .dumpit = NULL, |
1347 | }, | 1352 | }, |
1348 | { | 1353 | { |
1349 | .cmd = NLBL_UNLABEL_C_STATICLISTDEF, | 1354 | .cmd = NLBL_UNLABEL_C_STATICLISTDEF, |
1355 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1350 | .flags = 0, | 1356 | .flags = 0, |
1351 | .doit = NULL, | 1357 | .doit = NULL, |
1352 | .dumpit = netlbl_unlabel_staticlistdef, | 1358 | .dumpit = netlbl_unlabel_staticlistdef, |
1353 | }, | 1359 | }, |
1354 | { | 1360 | { |
1355 | .cmd = NLBL_UNLABEL_C_ACCEPT, | 1361 | .cmd = NLBL_UNLABEL_C_ACCEPT, |
1362 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1356 | .flags = GENL_ADMIN_PERM, | 1363 | .flags = GENL_ADMIN_PERM, |
1357 | .doit = netlbl_unlabel_accept, | 1364 | .doit = netlbl_unlabel_accept, |
1358 | .dumpit = NULL, | 1365 | .dumpit = NULL, |
1359 | }, | 1366 | }, |
1360 | { | 1367 | { |
1361 | .cmd = NLBL_UNLABEL_C_LIST, | 1368 | .cmd = NLBL_UNLABEL_C_LIST, |
1369 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1362 | .flags = 0, | 1370 | .flags = 0, |
1363 | .doit = netlbl_unlabel_list, | 1371 | .doit = netlbl_unlabel_list, |
1364 | .dumpit = NULL, | 1372 | .dumpit = NULL, |
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c index 994d9aff2093..72668759cd2b 100644 --- a/net/netlink/genetlink.c +++ b/net/netlink/genetlink.c | |||
@@ -536,6 +536,24 @@ static int genl_family_rcv_msg(const struct genl_family *family, | |||
536 | if (ops->dumpit == NULL) | 536 | if (ops->dumpit == NULL) |
537 | return -EOPNOTSUPP; | 537 | return -EOPNOTSUPP; |
538 | 538 | ||
539 | if (!(ops->validate & GENL_DONT_VALIDATE_DUMP)) { | ||
540 | unsigned int validate = NL_VALIDATE_STRICT; | ||
541 | int hdrlen = GENL_HDRLEN + family->hdrsize; | ||
542 | |||
543 | if (ops->validate & GENL_DONT_VALIDATE_DUMP_STRICT) | ||
544 | validate = NL_VALIDATE_LIBERAL; | ||
545 | |||
546 | if (nlh->nlmsg_len < nlmsg_msg_size(hdrlen)) | ||
547 | return -EINVAL; | ||
548 | |||
549 | rc = __nla_validate(nlmsg_attrdata(nlh, hdrlen), | ||
550 | nlmsg_attrlen(nlh, hdrlen), | ||
551 | family->maxattr, family->policy, | ||
552 | validate, extack); | ||
553 | if (rc) | ||
554 | return rc; | ||
555 | } | ||
556 | |||
539 | if (!family->parallel_ops) { | 557 | if (!family->parallel_ops) { |
540 | struct netlink_dump_control c = { | 558 | struct netlink_dump_control c = { |
541 | .module = family->module, | 559 | .module = family->module, |
@@ -577,9 +595,13 @@ static int genl_family_rcv_msg(const struct genl_family *family, | |||
577 | attrbuf = family->attrbuf; | 595 | attrbuf = family->attrbuf; |
578 | 596 | ||
579 | if (attrbuf) { | 597 | if (attrbuf) { |
580 | err = nlmsg_parse_deprecated(nlh, hdrlen, attrbuf, | 598 | enum netlink_validation validate = NL_VALIDATE_STRICT; |
581 | family->maxattr, family->policy, | 599 | |
582 | extack); | 600 | if (ops->validate & GENL_DONT_VALIDATE_STRICT) |
601 | validate = NL_VALIDATE_LIBERAL; | ||
602 | |||
603 | err = __nlmsg_parse(nlh, hdrlen, attrbuf, family->maxattr, | ||
604 | family->policy, validate, extack); | ||
583 | if (err < 0) | 605 | if (err < 0) |
584 | goto out; | 606 | goto out; |
585 | } | 607 | } |
@@ -939,6 +961,7 @@ static int genl_ctrl_event(int event, const struct genl_family *family, | |||
939 | static const struct genl_ops genl_ctrl_ops[] = { | 961 | static const struct genl_ops genl_ctrl_ops[] = { |
940 | { | 962 | { |
941 | .cmd = CTRL_CMD_GETFAMILY, | 963 | .cmd = CTRL_CMD_GETFAMILY, |
964 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
942 | .doit = ctrl_getfamily, | 965 | .doit = ctrl_getfamily, |
943 | .dumpit = ctrl_dumpfamily, | 966 | .dumpit = ctrl_dumpfamily, |
944 | }, | 967 | }, |
diff --git a/net/nfc/netlink.c b/net/nfc/netlink.c index c6ba308cede7..04a8e47674ec 100644 --- a/net/nfc/netlink.c +++ b/net/nfc/netlink.c | |||
@@ -1669,82 +1669,101 @@ EXPORT_SYMBOL(nfc_vendor_cmd_reply); | |||
1669 | static const struct genl_ops nfc_genl_ops[] = { | 1669 | static const struct genl_ops nfc_genl_ops[] = { |
1670 | { | 1670 | { |
1671 | .cmd = NFC_CMD_GET_DEVICE, | 1671 | .cmd = NFC_CMD_GET_DEVICE, |
1672 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1672 | .doit = nfc_genl_get_device, | 1673 | .doit = nfc_genl_get_device, |
1673 | .dumpit = nfc_genl_dump_devices, | 1674 | .dumpit = nfc_genl_dump_devices, |
1674 | .done = nfc_genl_dump_devices_done, | 1675 | .done = nfc_genl_dump_devices_done, |
1675 | }, | 1676 | }, |
1676 | { | 1677 | { |
1677 | .cmd = NFC_CMD_DEV_UP, | 1678 | .cmd = NFC_CMD_DEV_UP, |
1679 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1678 | .doit = nfc_genl_dev_up, | 1680 | .doit = nfc_genl_dev_up, |
1679 | }, | 1681 | }, |
1680 | { | 1682 | { |
1681 | .cmd = NFC_CMD_DEV_DOWN, | 1683 | .cmd = NFC_CMD_DEV_DOWN, |
1684 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1682 | .doit = nfc_genl_dev_down, | 1685 | .doit = nfc_genl_dev_down, |
1683 | }, | 1686 | }, |
1684 | { | 1687 | { |
1685 | .cmd = NFC_CMD_START_POLL, | 1688 | .cmd = NFC_CMD_START_POLL, |
1689 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1686 | .doit = nfc_genl_start_poll, | 1690 | .doit = nfc_genl_start_poll, |
1687 | }, | 1691 | }, |
1688 | { | 1692 | { |
1689 | .cmd = NFC_CMD_STOP_POLL, | 1693 | .cmd = NFC_CMD_STOP_POLL, |
1694 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1690 | .doit = nfc_genl_stop_poll, | 1695 | .doit = nfc_genl_stop_poll, |
1691 | }, | 1696 | }, |
1692 | { | 1697 | { |
1693 | .cmd = NFC_CMD_DEP_LINK_UP, | 1698 | .cmd = NFC_CMD_DEP_LINK_UP, |
1699 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1694 | .doit = nfc_genl_dep_link_up, | 1700 | .doit = nfc_genl_dep_link_up, |
1695 | }, | 1701 | }, |
1696 | { | 1702 | { |
1697 | .cmd = NFC_CMD_DEP_LINK_DOWN, | 1703 | .cmd = NFC_CMD_DEP_LINK_DOWN, |
1704 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1698 | .doit = nfc_genl_dep_link_down, | 1705 | .doit = nfc_genl_dep_link_down, |
1699 | }, | 1706 | }, |
1700 | { | 1707 | { |
1701 | .cmd = NFC_CMD_GET_TARGET, | 1708 | .cmd = NFC_CMD_GET_TARGET, |
1709 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1702 | .dumpit = nfc_genl_dump_targets, | 1710 | .dumpit = nfc_genl_dump_targets, |
1703 | .done = nfc_genl_dump_targets_done, | 1711 | .done = nfc_genl_dump_targets_done, |
1704 | }, | 1712 | }, |
1705 | { | 1713 | { |
1706 | .cmd = NFC_CMD_LLC_GET_PARAMS, | 1714 | .cmd = NFC_CMD_LLC_GET_PARAMS, |
1715 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1707 | .doit = nfc_genl_llc_get_params, | 1716 | .doit = nfc_genl_llc_get_params, |
1708 | }, | 1717 | }, |
1709 | { | 1718 | { |
1710 | .cmd = NFC_CMD_LLC_SET_PARAMS, | 1719 | .cmd = NFC_CMD_LLC_SET_PARAMS, |
1720 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1711 | .doit = nfc_genl_llc_set_params, | 1721 | .doit = nfc_genl_llc_set_params, |
1712 | }, | 1722 | }, |
1713 | { | 1723 | { |
1714 | .cmd = NFC_CMD_LLC_SDREQ, | 1724 | .cmd = NFC_CMD_LLC_SDREQ, |
1725 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1715 | .doit = nfc_genl_llc_sdreq, | 1726 | .doit = nfc_genl_llc_sdreq, |
1716 | }, | 1727 | }, |
1717 | { | 1728 | { |
1718 | .cmd = NFC_CMD_FW_DOWNLOAD, | 1729 | .cmd = NFC_CMD_FW_DOWNLOAD, |
1730 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1719 | .doit = nfc_genl_fw_download, | 1731 | .doit = nfc_genl_fw_download, |
1720 | }, | 1732 | }, |
1721 | { | 1733 | { |
1722 | .cmd = NFC_CMD_ENABLE_SE, | 1734 | .cmd = NFC_CMD_ENABLE_SE, |
1735 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1723 | .doit = nfc_genl_enable_se, | 1736 | .doit = nfc_genl_enable_se, |
1724 | }, | 1737 | }, |
1725 | { | 1738 | { |
1726 | .cmd = NFC_CMD_DISABLE_SE, | 1739 | .cmd = NFC_CMD_DISABLE_SE, |
1740 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1727 | .doit = nfc_genl_disable_se, | 1741 | .doit = nfc_genl_disable_se, |
1728 | }, | 1742 | }, |
1729 | { | 1743 | { |
1730 | .cmd = NFC_CMD_GET_SE, | 1744 | .cmd = NFC_CMD_GET_SE, |
1745 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1731 | .dumpit = nfc_genl_dump_ses, | 1746 | .dumpit = nfc_genl_dump_ses, |
1732 | .done = nfc_genl_dump_ses_done, | 1747 | .done = nfc_genl_dump_ses_done, |
1733 | }, | 1748 | }, |
1734 | { | 1749 | { |
1735 | .cmd = NFC_CMD_SE_IO, | 1750 | .cmd = NFC_CMD_SE_IO, |
1751 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1736 | .doit = nfc_genl_se_io, | 1752 | .doit = nfc_genl_se_io, |
1737 | }, | 1753 | }, |
1738 | { | 1754 | { |
1739 | .cmd = NFC_CMD_ACTIVATE_TARGET, | 1755 | .cmd = NFC_CMD_ACTIVATE_TARGET, |
1756 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1740 | .doit = nfc_genl_activate_target, | 1757 | .doit = nfc_genl_activate_target, |
1741 | }, | 1758 | }, |
1742 | { | 1759 | { |
1743 | .cmd = NFC_CMD_VENDOR, | 1760 | .cmd = NFC_CMD_VENDOR, |
1761 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1744 | .doit = nfc_genl_vendor_cmd, | 1762 | .doit = nfc_genl_vendor_cmd, |
1745 | }, | 1763 | }, |
1746 | { | 1764 | { |
1747 | .cmd = NFC_CMD_DEACTIVATE_TARGET, | 1765 | .cmd = NFC_CMD_DEACTIVATE_TARGET, |
1766 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1748 | .doit = nfc_genl_deactivate_target, | 1767 | .doit = nfc_genl_deactivate_target, |
1749 | }, | 1768 | }, |
1750 | }; | 1769 | }; |
diff --git a/net/openvswitch/conntrack.c b/net/openvswitch/conntrack.c index ff8baf810bb3..bded32144619 100644 --- a/net/openvswitch/conntrack.c +++ b/net/openvswitch/conntrack.c | |||
@@ -2186,16 +2186,19 @@ exit_err: | |||
2186 | 2186 | ||
2187 | static struct genl_ops ct_limit_genl_ops[] = { | 2187 | static struct genl_ops ct_limit_genl_ops[] = { |
2188 | { .cmd = OVS_CT_LIMIT_CMD_SET, | 2188 | { .cmd = OVS_CT_LIMIT_CMD_SET, |
2189 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2189 | .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN | 2190 | .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN |
2190 | * privilege. */ | 2191 | * privilege. */ |
2191 | .doit = ovs_ct_limit_cmd_set, | 2192 | .doit = ovs_ct_limit_cmd_set, |
2192 | }, | 2193 | }, |
2193 | { .cmd = OVS_CT_LIMIT_CMD_DEL, | 2194 | { .cmd = OVS_CT_LIMIT_CMD_DEL, |
2195 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2194 | .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN | 2196 | .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN |
2195 | * privilege. */ | 2197 | * privilege. */ |
2196 | .doit = ovs_ct_limit_cmd_del, | 2198 | .doit = ovs_ct_limit_cmd_del, |
2197 | }, | 2199 | }, |
2198 | { .cmd = OVS_CT_LIMIT_CMD_GET, | 2200 | { .cmd = OVS_CT_LIMIT_CMD_GET, |
2201 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2199 | .flags = 0, /* OK for unprivileged users. */ | 2202 | .flags = 0, /* OK for unprivileged users. */ |
2200 | .doit = ovs_ct_limit_cmd_get, | 2203 | .doit = ovs_ct_limit_cmd_get, |
2201 | }, | 2204 | }, |
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c index 3b99fc3de9ac..b95015c7e999 100644 --- a/net/openvswitch/datapath.c +++ b/net/openvswitch/datapath.c | |||
@@ -639,6 +639,7 @@ static const struct nla_policy packet_policy[OVS_PACKET_ATTR_MAX + 1] = { | |||
639 | 639 | ||
640 | static const struct genl_ops dp_packet_genl_ops[] = { | 640 | static const struct genl_ops dp_packet_genl_ops[] = { |
641 | { .cmd = OVS_PACKET_CMD_EXECUTE, | 641 | { .cmd = OVS_PACKET_CMD_EXECUTE, |
642 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
642 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ | 643 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ |
643 | .doit = ovs_packet_cmd_execute | 644 | .doit = ovs_packet_cmd_execute |
644 | } | 645 | } |
@@ -1424,19 +1425,23 @@ static const struct nla_policy flow_policy[OVS_FLOW_ATTR_MAX + 1] = { | |||
1424 | 1425 | ||
1425 | static const struct genl_ops dp_flow_genl_ops[] = { | 1426 | static const struct genl_ops dp_flow_genl_ops[] = { |
1426 | { .cmd = OVS_FLOW_CMD_NEW, | 1427 | { .cmd = OVS_FLOW_CMD_NEW, |
1428 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1427 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ | 1429 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ |
1428 | .doit = ovs_flow_cmd_new | 1430 | .doit = ovs_flow_cmd_new |
1429 | }, | 1431 | }, |
1430 | { .cmd = OVS_FLOW_CMD_DEL, | 1432 | { .cmd = OVS_FLOW_CMD_DEL, |
1433 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1431 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ | 1434 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ |
1432 | .doit = ovs_flow_cmd_del | 1435 | .doit = ovs_flow_cmd_del |
1433 | }, | 1436 | }, |
1434 | { .cmd = OVS_FLOW_CMD_GET, | 1437 | { .cmd = OVS_FLOW_CMD_GET, |
1438 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1435 | .flags = 0, /* OK for unprivileged users. */ | 1439 | .flags = 0, /* OK for unprivileged users. */ |
1436 | .doit = ovs_flow_cmd_get, | 1440 | .doit = ovs_flow_cmd_get, |
1437 | .dumpit = ovs_flow_cmd_dump | 1441 | .dumpit = ovs_flow_cmd_dump |
1438 | }, | 1442 | }, |
1439 | { .cmd = OVS_FLOW_CMD_SET, | 1443 | { .cmd = OVS_FLOW_CMD_SET, |
1444 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1440 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ | 1445 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ |
1441 | .doit = ovs_flow_cmd_set, | 1446 | .doit = ovs_flow_cmd_set, |
1442 | }, | 1447 | }, |
@@ -1814,19 +1819,23 @@ static const struct nla_policy datapath_policy[OVS_DP_ATTR_MAX + 1] = { | |||
1814 | 1819 | ||
1815 | static const struct genl_ops dp_datapath_genl_ops[] = { | 1820 | static const struct genl_ops dp_datapath_genl_ops[] = { |
1816 | { .cmd = OVS_DP_CMD_NEW, | 1821 | { .cmd = OVS_DP_CMD_NEW, |
1822 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1817 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ | 1823 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ |
1818 | .doit = ovs_dp_cmd_new | 1824 | .doit = ovs_dp_cmd_new |
1819 | }, | 1825 | }, |
1820 | { .cmd = OVS_DP_CMD_DEL, | 1826 | { .cmd = OVS_DP_CMD_DEL, |
1827 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1821 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ | 1828 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ |
1822 | .doit = ovs_dp_cmd_del | 1829 | .doit = ovs_dp_cmd_del |
1823 | }, | 1830 | }, |
1824 | { .cmd = OVS_DP_CMD_GET, | 1831 | { .cmd = OVS_DP_CMD_GET, |
1832 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1825 | .flags = 0, /* OK for unprivileged users. */ | 1833 | .flags = 0, /* OK for unprivileged users. */ |
1826 | .doit = ovs_dp_cmd_get, | 1834 | .doit = ovs_dp_cmd_get, |
1827 | .dumpit = ovs_dp_cmd_dump | 1835 | .dumpit = ovs_dp_cmd_dump |
1828 | }, | 1836 | }, |
1829 | { .cmd = OVS_DP_CMD_SET, | 1837 | { .cmd = OVS_DP_CMD_SET, |
1838 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1830 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ | 1839 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ |
1831 | .doit = ovs_dp_cmd_set, | 1840 | .doit = ovs_dp_cmd_set, |
1832 | }, | 1841 | }, |
@@ -2254,19 +2263,23 @@ static const struct nla_policy vport_policy[OVS_VPORT_ATTR_MAX + 1] = { | |||
2254 | 2263 | ||
2255 | static const struct genl_ops dp_vport_genl_ops[] = { | 2264 | static const struct genl_ops dp_vport_genl_ops[] = { |
2256 | { .cmd = OVS_VPORT_CMD_NEW, | 2265 | { .cmd = OVS_VPORT_CMD_NEW, |
2266 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2257 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ | 2267 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ |
2258 | .doit = ovs_vport_cmd_new | 2268 | .doit = ovs_vport_cmd_new |
2259 | }, | 2269 | }, |
2260 | { .cmd = OVS_VPORT_CMD_DEL, | 2270 | { .cmd = OVS_VPORT_CMD_DEL, |
2271 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2261 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ | 2272 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ |
2262 | .doit = ovs_vport_cmd_del | 2273 | .doit = ovs_vport_cmd_del |
2263 | }, | 2274 | }, |
2264 | { .cmd = OVS_VPORT_CMD_GET, | 2275 | { .cmd = OVS_VPORT_CMD_GET, |
2276 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2265 | .flags = 0, /* OK for unprivileged users. */ | 2277 | .flags = 0, /* OK for unprivileged users. */ |
2266 | .doit = ovs_vport_cmd_get, | 2278 | .doit = ovs_vport_cmd_get, |
2267 | .dumpit = ovs_vport_cmd_dump | 2279 | .dumpit = ovs_vport_cmd_dump |
2268 | }, | 2280 | }, |
2269 | { .cmd = OVS_VPORT_CMD_SET, | 2281 | { .cmd = OVS_VPORT_CMD_SET, |
2282 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
2270 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ | 2283 | .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ |
2271 | .doit = ovs_vport_cmd_set, | 2284 | .doit = ovs_vport_cmd_set, |
2272 | }, | 2285 | }, |
diff --git a/net/openvswitch/meter.c b/net/openvswitch/meter.c index 9c89e8539a5a..bb67238f0340 100644 --- a/net/openvswitch/meter.c +++ b/net/openvswitch/meter.c | |||
@@ -526,20 +526,24 @@ bool ovs_meter_execute(struct datapath *dp, struct sk_buff *skb, | |||
526 | 526 | ||
527 | static struct genl_ops dp_meter_genl_ops[] = { | 527 | static struct genl_ops dp_meter_genl_ops[] = { |
528 | { .cmd = OVS_METER_CMD_FEATURES, | 528 | { .cmd = OVS_METER_CMD_FEATURES, |
529 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
529 | .flags = 0, /* OK for unprivileged users. */ | 530 | .flags = 0, /* OK for unprivileged users. */ |
530 | .doit = ovs_meter_cmd_features | 531 | .doit = ovs_meter_cmd_features |
531 | }, | 532 | }, |
532 | { .cmd = OVS_METER_CMD_SET, | 533 | { .cmd = OVS_METER_CMD_SET, |
534 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
533 | .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN | 535 | .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN |
534 | * privilege. | 536 | * privilege. |
535 | */ | 537 | */ |
536 | .doit = ovs_meter_cmd_set, | 538 | .doit = ovs_meter_cmd_set, |
537 | }, | 539 | }, |
538 | { .cmd = OVS_METER_CMD_GET, | 540 | { .cmd = OVS_METER_CMD_GET, |
541 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
539 | .flags = 0, /* OK for unprivileged users. */ | 542 | .flags = 0, /* OK for unprivileged users. */ |
540 | .doit = ovs_meter_cmd_get, | 543 | .doit = ovs_meter_cmd_get, |
541 | }, | 544 | }, |
542 | { .cmd = OVS_METER_CMD_DEL, | 545 | { .cmd = OVS_METER_CMD_DEL, |
546 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
543 | .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN | 547 | .flags = GENL_ADMIN_PERM, /* Requires CAP_NET_ADMIN |
544 | * privilege. | 548 | * privilege. |
545 | */ | 549 | */ |
diff --git a/net/psample/psample.c b/net/psample/psample.c index 64f95624f219..a107b2405668 100644 --- a/net/psample/psample.c +++ b/net/psample/psample.c | |||
@@ -100,6 +100,7 @@ static int psample_nl_cmd_get_group_dumpit(struct sk_buff *msg, | |||
100 | static const struct genl_ops psample_nl_ops[] = { | 100 | static const struct genl_ops psample_nl_ops[] = { |
101 | { | 101 | { |
102 | .cmd = PSAMPLE_CMD_GET_GROUP, | 102 | .cmd = PSAMPLE_CMD_GET_GROUP, |
103 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
103 | .dumpit = psample_nl_cmd_get_group_dumpit, | 104 | .dumpit = psample_nl_cmd_get_group_dumpit, |
104 | /* can be retrieved by unprivileged users */ | 105 | /* can be retrieved by unprivileged users */ |
105 | } | 106 | } |
diff --git a/net/smc/smc_pnet.c b/net/smc/smc_pnet.c index 9f5d8f36f2d7..bab2da8cf17a 100644 --- a/net/smc/smc_pnet.c +++ b/net/smc/smc_pnet.c | |||
@@ -612,6 +612,7 @@ static int smc_pnet_flush(struct sk_buff *skb, struct genl_info *info) | |||
612 | static const struct genl_ops smc_pnet_ops[] = { | 612 | static const struct genl_ops smc_pnet_ops[] = { |
613 | { | 613 | { |
614 | .cmd = SMC_PNETID_GET, | 614 | .cmd = SMC_PNETID_GET, |
615 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
615 | .flags = GENL_ADMIN_PERM, | 616 | .flags = GENL_ADMIN_PERM, |
616 | .doit = smc_pnet_get, | 617 | .doit = smc_pnet_get, |
617 | .dumpit = smc_pnet_dump, | 618 | .dumpit = smc_pnet_dump, |
@@ -619,16 +620,19 @@ static const struct genl_ops smc_pnet_ops[] = { | |||
619 | }, | 620 | }, |
620 | { | 621 | { |
621 | .cmd = SMC_PNETID_ADD, | 622 | .cmd = SMC_PNETID_ADD, |
623 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
622 | .flags = GENL_ADMIN_PERM, | 624 | .flags = GENL_ADMIN_PERM, |
623 | .doit = smc_pnet_add | 625 | .doit = smc_pnet_add |
624 | }, | 626 | }, |
625 | { | 627 | { |
626 | .cmd = SMC_PNETID_DEL, | 628 | .cmd = SMC_PNETID_DEL, |
629 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
627 | .flags = GENL_ADMIN_PERM, | 630 | .flags = GENL_ADMIN_PERM, |
628 | .doit = smc_pnet_del | 631 | .doit = smc_pnet_del |
629 | }, | 632 | }, |
630 | { | 633 | { |
631 | .cmd = SMC_PNETID_FLUSH, | 634 | .cmd = SMC_PNETID_FLUSH, |
635 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
632 | .flags = GENL_ADMIN_PERM, | 636 | .flags = GENL_ADMIN_PERM, |
633 | .doit = smc_pnet_flush | 637 | .doit = smc_pnet_flush |
634 | } | 638 | } |
diff --git a/net/tipc/netlink.c b/net/tipc/netlink.c index 3d5d0fb5b37c..99bd166bccec 100644 --- a/net/tipc/netlink.c +++ b/net/tipc/netlink.c | |||
@@ -143,93 +143,114 @@ const struct nla_policy tipc_nl_udp_policy[TIPC_NLA_UDP_MAX + 1] = { | |||
143 | static const struct genl_ops tipc_genl_v2_ops[] = { | 143 | static const struct genl_ops tipc_genl_v2_ops[] = { |
144 | { | 144 | { |
145 | .cmd = TIPC_NL_BEARER_DISABLE, | 145 | .cmd = TIPC_NL_BEARER_DISABLE, |
146 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
146 | .doit = tipc_nl_bearer_disable, | 147 | .doit = tipc_nl_bearer_disable, |
147 | }, | 148 | }, |
148 | { | 149 | { |
149 | .cmd = TIPC_NL_BEARER_ENABLE, | 150 | .cmd = TIPC_NL_BEARER_ENABLE, |
151 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
150 | .doit = tipc_nl_bearer_enable, | 152 | .doit = tipc_nl_bearer_enable, |
151 | }, | 153 | }, |
152 | { | 154 | { |
153 | .cmd = TIPC_NL_BEARER_GET, | 155 | .cmd = TIPC_NL_BEARER_GET, |
156 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
154 | .doit = tipc_nl_bearer_get, | 157 | .doit = tipc_nl_bearer_get, |
155 | .dumpit = tipc_nl_bearer_dump, | 158 | .dumpit = tipc_nl_bearer_dump, |
156 | }, | 159 | }, |
157 | { | 160 | { |
158 | .cmd = TIPC_NL_BEARER_ADD, | 161 | .cmd = TIPC_NL_BEARER_ADD, |
162 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
159 | .doit = tipc_nl_bearer_add, | 163 | .doit = tipc_nl_bearer_add, |
160 | }, | 164 | }, |
161 | { | 165 | { |
162 | .cmd = TIPC_NL_BEARER_SET, | 166 | .cmd = TIPC_NL_BEARER_SET, |
167 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
163 | .doit = tipc_nl_bearer_set, | 168 | .doit = tipc_nl_bearer_set, |
164 | }, | 169 | }, |
165 | { | 170 | { |
166 | .cmd = TIPC_NL_SOCK_GET, | 171 | .cmd = TIPC_NL_SOCK_GET, |
172 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
167 | .start = tipc_dump_start, | 173 | .start = tipc_dump_start, |
168 | .dumpit = tipc_nl_sk_dump, | 174 | .dumpit = tipc_nl_sk_dump, |
169 | .done = tipc_dump_done, | 175 | .done = tipc_dump_done, |
170 | }, | 176 | }, |
171 | { | 177 | { |
172 | .cmd = TIPC_NL_PUBL_GET, | 178 | .cmd = TIPC_NL_PUBL_GET, |
179 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
173 | .dumpit = tipc_nl_publ_dump, | 180 | .dumpit = tipc_nl_publ_dump, |
174 | }, | 181 | }, |
175 | { | 182 | { |
176 | .cmd = TIPC_NL_LINK_GET, | 183 | .cmd = TIPC_NL_LINK_GET, |
184 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
177 | .doit = tipc_nl_node_get_link, | 185 | .doit = tipc_nl_node_get_link, |
178 | .dumpit = tipc_nl_node_dump_link, | 186 | .dumpit = tipc_nl_node_dump_link, |
179 | }, | 187 | }, |
180 | { | 188 | { |
181 | .cmd = TIPC_NL_LINK_SET, | 189 | .cmd = TIPC_NL_LINK_SET, |
190 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
182 | .doit = tipc_nl_node_set_link, | 191 | .doit = tipc_nl_node_set_link, |
183 | }, | 192 | }, |
184 | { | 193 | { |
185 | .cmd = TIPC_NL_LINK_RESET_STATS, | 194 | .cmd = TIPC_NL_LINK_RESET_STATS, |
195 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
186 | .doit = tipc_nl_node_reset_link_stats, | 196 | .doit = tipc_nl_node_reset_link_stats, |
187 | }, | 197 | }, |
188 | { | 198 | { |
189 | .cmd = TIPC_NL_MEDIA_GET, | 199 | .cmd = TIPC_NL_MEDIA_GET, |
200 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
190 | .doit = tipc_nl_media_get, | 201 | .doit = tipc_nl_media_get, |
191 | .dumpit = tipc_nl_media_dump, | 202 | .dumpit = tipc_nl_media_dump, |
192 | }, | 203 | }, |
193 | { | 204 | { |
194 | .cmd = TIPC_NL_MEDIA_SET, | 205 | .cmd = TIPC_NL_MEDIA_SET, |
206 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
195 | .doit = tipc_nl_media_set, | 207 | .doit = tipc_nl_media_set, |
196 | }, | 208 | }, |
197 | { | 209 | { |
198 | .cmd = TIPC_NL_NODE_GET, | 210 | .cmd = TIPC_NL_NODE_GET, |
211 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
199 | .dumpit = tipc_nl_node_dump, | 212 | .dumpit = tipc_nl_node_dump, |
200 | }, | 213 | }, |
201 | { | 214 | { |
202 | .cmd = TIPC_NL_NET_GET, | 215 | .cmd = TIPC_NL_NET_GET, |
216 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
203 | .dumpit = tipc_nl_net_dump, | 217 | .dumpit = tipc_nl_net_dump, |
204 | }, | 218 | }, |
205 | { | 219 | { |
206 | .cmd = TIPC_NL_NET_SET, | 220 | .cmd = TIPC_NL_NET_SET, |
221 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
207 | .doit = tipc_nl_net_set, | 222 | .doit = tipc_nl_net_set, |
208 | }, | 223 | }, |
209 | { | 224 | { |
210 | .cmd = TIPC_NL_NAME_TABLE_GET, | 225 | .cmd = TIPC_NL_NAME_TABLE_GET, |
226 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
211 | .dumpit = tipc_nl_name_table_dump, | 227 | .dumpit = tipc_nl_name_table_dump, |
212 | }, | 228 | }, |
213 | { | 229 | { |
214 | .cmd = TIPC_NL_MON_SET, | 230 | .cmd = TIPC_NL_MON_SET, |
231 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
215 | .doit = tipc_nl_node_set_monitor, | 232 | .doit = tipc_nl_node_set_monitor, |
216 | }, | 233 | }, |
217 | { | 234 | { |
218 | .cmd = TIPC_NL_MON_GET, | 235 | .cmd = TIPC_NL_MON_GET, |
236 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
219 | .doit = tipc_nl_node_get_monitor, | 237 | .doit = tipc_nl_node_get_monitor, |
220 | .dumpit = tipc_nl_node_dump_monitor, | 238 | .dumpit = tipc_nl_node_dump_monitor, |
221 | }, | 239 | }, |
222 | { | 240 | { |
223 | .cmd = TIPC_NL_MON_PEER_GET, | 241 | .cmd = TIPC_NL_MON_PEER_GET, |
242 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
224 | .dumpit = tipc_nl_node_dump_monitor_peer, | 243 | .dumpit = tipc_nl_node_dump_monitor_peer, |
225 | }, | 244 | }, |
226 | { | 245 | { |
227 | .cmd = TIPC_NL_PEER_REMOVE, | 246 | .cmd = TIPC_NL_PEER_REMOVE, |
247 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
228 | .doit = tipc_nl_peer_rm, | 248 | .doit = tipc_nl_peer_rm, |
229 | }, | 249 | }, |
230 | #ifdef CONFIG_TIPC_MEDIA_UDP | 250 | #ifdef CONFIG_TIPC_MEDIA_UDP |
231 | { | 251 | { |
232 | .cmd = TIPC_NL_UDP_GET_REMOTEIP, | 252 | .cmd = TIPC_NL_UDP_GET_REMOTEIP, |
253 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
233 | .dumpit = tipc_udp_nl_dump_remoteip, | 254 | .dumpit = tipc_udp_nl_dump_remoteip, |
234 | }, | 255 | }, |
235 | #endif | 256 | #endif |
diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c index f7269ce934b5..c6a04c09d075 100644 --- a/net/tipc/netlink_compat.c +++ b/net/tipc/netlink_compat.c | |||
@@ -1305,6 +1305,7 @@ send: | |||
1305 | static const struct genl_ops tipc_genl_compat_ops[] = { | 1305 | static const struct genl_ops tipc_genl_compat_ops[] = { |
1306 | { | 1306 | { |
1307 | .cmd = TIPC_GENL_CMD, | 1307 | .cmd = TIPC_GENL_CMD, |
1308 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
1308 | .doit = tipc_nl_compat_recv, | 1309 | .doit = tipc_nl_compat_recv, |
1309 | }, | 1310 | }, |
1310 | }; | 1311 | }; |
diff --git a/net/wimax/stack.c b/net/wimax/stack.c index b7f571e55448..4969de672886 100644 --- a/net/wimax/stack.c +++ b/net/wimax/stack.c | |||
@@ -419,21 +419,25 @@ static const struct nla_policy wimax_gnl_policy[WIMAX_GNL_ATTR_MAX + 1] = { | |||
419 | static const struct genl_ops wimax_gnl_ops[] = { | 419 | static const struct genl_ops wimax_gnl_ops[] = { |
420 | { | 420 | { |
421 | .cmd = WIMAX_GNL_OP_MSG_FROM_USER, | 421 | .cmd = WIMAX_GNL_OP_MSG_FROM_USER, |
422 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
422 | .flags = GENL_ADMIN_PERM, | 423 | .flags = GENL_ADMIN_PERM, |
423 | .doit = wimax_gnl_doit_msg_from_user, | 424 | .doit = wimax_gnl_doit_msg_from_user, |
424 | }, | 425 | }, |
425 | { | 426 | { |
426 | .cmd = WIMAX_GNL_OP_RESET, | 427 | .cmd = WIMAX_GNL_OP_RESET, |
428 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
427 | .flags = GENL_ADMIN_PERM, | 429 | .flags = GENL_ADMIN_PERM, |
428 | .doit = wimax_gnl_doit_reset, | 430 | .doit = wimax_gnl_doit_reset, |
429 | }, | 431 | }, |
430 | { | 432 | { |
431 | .cmd = WIMAX_GNL_OP_RFKILL, | 433 | .cmd = WIMAX_GNL_OP_RFKILL, |
434 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
432 | .flags = GENL_ADMIN_PERM, | 435 | .flags = GENL_ADMIN_PERM, |
433 | .doit = wimax_gnl_doit_rfkill, | 436 | .doit = wimax_gnl_doit_rfkill, |
434 | }, | 437 | }, |
435 | { | 438 | { |
436 | .cmd = WIMAX_GNL_OP_STATE_GET, | 439 | .cmd = WIMAX_GNL_OP_STATE_GET, |
440 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
437 | .flags = GENL_ADMIN_PERM, | 441 | .flags = GENL_ADMIN_PERM, |
438 | .doit = wimax_gnl_doit_state_get, | 442 | .doit = wimax_gnl_doit_state_get, |
439 | }, | 443 | }, |
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 782c8225a90a..fffe4b371e23 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -13591,6 +13591,7 @@ static void nl80211_post_doit(const struct genl_ops *ops, struct sk_buff *skb, | |||
13591 | static const struct genl_ops nl80211_ops[] = { | 13591 | static const struct genl_ops nl80211_ops[] = { |
13592 | { | 13592 | { |
13593 | .cmd = NL80211_CMD_GET_WIPHY, | 13593 | .cmd = NL80211_CMD_GET_WIPHY, |
13594 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13594 | .doit = nl80211_get_wiphy, | 13595 | .doit = nl80211_get_wiphy, |
13595 | .dumpit = nl80211_dump_wiphy, | 13596 | .dumpit = nl80211_dump_wiphy, |
13596 | .done = nl80211_dump_wiphy_done, | 13597 | .done = nl80211_dump_wiphy_done, |
@@ -13600,12 +13601,14 @@ static const struct genl_ops nl80211_ops[] = { | |||
13600 | }, | 13601 | }, |
13601 | { | 13602 | { |
13602 | .cmd = NL80211_CMD_SET_WIPHY, | 13603 | .cmd = NL80211_CMD_SET_WIPHY, |
13604 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13603 | .doit = nl80211_set_wiphy, | 13605 | .doit = nl80211_set_wiphy, |
13604 | .flags = GENL_UNS_ADMIN_PERM, | 13606 | .flags = GENL_UNS_ADMIN_PERM, |
13605 | .internal_flags = NL80211_FLAG_NEED_RTNL, | 13607 | .internal_flags = NL80211_FLAG_NEED_RTNL, |
13606 | }, | 13608 | }, |
13607 | { | 13609 | { |
13608 | .cmd = NL80211_CMD_GET_INTERFACE, | 13610 | .cmd = NL80211_CMD_GET_INTERFACE, |
13611 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13609 | .doit = nl80211_get_interface, | 13612 | .doit = nl80211_get_interface, |
13610 | .dumpit = nl80211_dump_interface, | 13613 | .dumpit = nl80211_dump_interface, |
13611 | /* can be retrieved by unprivileged users */ | 13614 | /* can be retrieved by unprivileged users */ |
@@ -13614,6 +13617,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13614 | }, | 13617 | }, |
13615 | { | 13618 | { |
13616 | .cmd = NL80211_CMD_SET_INTERFACE, | 13619 | .cmd = NL80211_CMD_SET_INTERFACE, |
13620 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13617 | .doit = nl80211_set_interface, | 13621 | .doit = nl80211_set_interface, |
13618 | .flags = GENL_UNS_ADMIN_PERM, | 13622 | .flags = GENL_UNS_ADMIN_PERM, |
13619 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 13623 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -13621,6 +13625,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13621 | }, | 13625 | }, |
13622 | { | 13626 | { |
13623 | .cmd = NL80211_CMD_NEW_INTERFACE, | 13627 | .cmd = NL80211_CMD_NEW_INTERFACE, |
13628 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13624 | .doit = nl80211_new_interface, | 13629 | .doit = nl80211_new_interface, |
13625 | .flags = GENL_UNS_ADMIN_PERM, | 13630 | .flags = GENL_UNS_ADMIN_PERM, |
13626 | .internal_flags = NL80211_FLAG_NEED_WIPHY | | 13631 | .internal_flags = NL80211_FLAG_NEED_WIPHY | |
@@ -13628,6 +13633,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13628 | }, | 13633 | }, |
13629 | { | 13634 | { |
13630 | .cmd = NL80211_CMD_DEL_INTERFACE, | 13635 | .cmd = NL80211_CMD_DEL_INTERFACE, |
13636 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13631 | .doit = nl80211_del_interface, | 13637 | .doit = nl80211_del_interface, |
13632 | .flags = GENL_UNS_ADMIN_PERM, | 13638 | .flags = GENL_UNS_ADMIN_PERM, |
13633 | .internal_flags = NL80211_FLAG_NEED_WDEV | | 13639 | .internal_flags = NL80211_FLAG_NEED_WDEV | |
@@ -13635,6 +13641,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13635 | }, | 13641 | }, |
13636 | { | 13642 | { |
13637 | .cmd = NL80211_CMD_GET_KEY, | 13643 | .cmd = NL80211_CMD_GET_KEY, |
13644 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13638 | .doit = nl80211_get_key, | 13645 | .doit = nl80211_get_key, |
13639 | .flags = GENL_UNS_ADMIN_PERM, | 13646 | .flags = GENL_UNS_ADMIN_PERM, |
13640 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13647 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13642,6 +13649,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13642 | }, | 13649 | }, |
13643 | { | 13650 | { |
13644 | .cmd = NL80211_CMD_SET_KEY, | 13651 | .cmd = NL80211_CMD_SET_KEY, |
13652 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13645 | .doit = nl80211_set_key, | 13653 | .doit = nl80211_set_key, |
13646 | .flags = GENL_UNS_ADMIN_PERM, | 13654 | .flags = GENL_UNS_ADMIN_PERM, |
13647 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13655 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13650,6 +13658,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13650 | }, | 13658 | }, |
13651 | { | 13659 | { |
13652 | .cmd = NL80211_CMD_NEW_KEY, | 13660 | .cmd = NL80211_CMD_NEW_KEY, |
13661 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13653 | .doit = nl80211_new_key, | 13662 | .doit = nl80211_new_key, |
13654 | .flags = GENL_UNS_ADMIN_PERM, | 13663 | .flags = GENL_UNS_ADMIN_PERM, |
13655 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13664 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13658,6 +13667,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13658 | }, | 13667 | }, |
13659 | { | 13668 | { |
13660 | .cmd = NL80211_CMD_DEL_KEY, | 13669 | .cmd = NL80211_CMD_DEL_KEY, |
13670 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13661 | .doit = nl80211_del_key, | 13671 | .doit = nl80211_del_key, |
13662 | .flags = GENL_UNS_ADMIN_PERM, | 13672 | .flags = GENL_UNS_ADMIN_PERM, |
13663 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13673 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13665,6 +13675,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13665 | }, | 13675 | }, |
13666 | { | 13676 | { |
13667 | .cmd = NL80211_CMD_SET_BEACON, | 13677 | .cmd = NL80211_CMD_SET_BEACON, |
13678 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13668 | .flags = GENL_UNS_ADMIN_PERM, | 13679 | .flags = GENL_UNS_ADMIN_PERM, |
13669 | .doit = nl80211_set_beacon, | 13680 | .doit = nl80211_set_beacon, |
13670 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13681 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13672,6 +13683,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13672 | }, | 13683 | }, |
13673 | { | 13684 | { |
13674 | .cmd = NL80211_CMD_START_AP, | 13685 | .cmd = NL80211_CMD_START_AP, |
13686 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13675 | .flags = GENL_UNS_ADMIN_PERM, | 13687 | .flags = GENL_UNS_ADMIN_PERM, |
13676 | .doit = nl80211_start_ap, | 13688 | .doit = nl80211_start_ap, |
13677 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13689 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13679,6 +13691,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13679 | }, | 13691 | }, |
13680 | { | 13692 | { |
13681 | .cmd = NL80211_CMD_STOP_AP, | 13693 | .cmd = NL80211_CMD_STOP_AP, |
13694 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13682 | .flags = GENL_UNS_ADMIN_PERM, | 13695 | .flags = GENL_UNS_ADMIN_PERM, |
13683 | .doit = nl80211_stop_ap, | 13696 | .doit = nl80211_stop_ap, |
13684 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13697 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13686,6 +13699,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13686 | }, | 13699 | }, |
13687 | { | 13700 | { |
13688 | .cmd = NL80211_CMD_GET_STATION, | 13701 | .cmd = NL80211_CMD_GET_STATION, |
13702 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13689 | .doit = nl80211_get_station, | 13703 | .doit = nl80211_get_station, |
13690 | .dumpit = nl80211_dump_station, | 13704 | .dumpit = nl80211_dump_station, |
13691 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 13705 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -13693,6 +13707,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13693 | }, | 13707 | }, |
13694 | { | 13708 | { |
13695 | .cmd = NL80211_CMD_SET_STATION, | 13709 | .cmd = NL80211_CMD_SET_STATION, |
13710 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13696 | .doit = nl80211_set_station, | 13711 | .doit = nl80211_set_station, |
13697 | .flags = GENL_UNS_ADMIN_PERM, | 13712 | .flags = GENL_UNS_ADMIN_PERM, |
13698 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13713 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13700,6 +13715,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13700 | }, | 13715 | }, |
13701 | { | 13716 | { |
13702 | .cmd = NL80211_CMD_NEW_STATION, | 13717 | .cmd = NL80211_CMD_NEW_STATION, |
13718 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13703 | .doit = nl80211_new_station, | 13719 | .doit = nl80211_new_station, |
13704 | .flags = GENL_UNS_ADMIN_PERM, | 13720 | .flags = GENL_UNS_ADMIN_PERM, |
13705 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13721 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13707,6 +13723,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13707 | }, | 13723 | }, |
13708 | { | 13724 | { |
13709 | .cmd = NL80211_CMD_DEL_STATION, | 13725 | .cmd = NL80211_CMD_DEL_STATION, |
13726 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13710 | .doit = nl80211_del_station, | 13727 | .doit = nl80211_del_station, |
13711 | .flags = GENL_UNS_ADMIN_PERM, | 13728 | .flags = GENL_UNS_ADMIN_PERM, |
13712 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13729 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13714,6 +13731,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13714 | }, | 13731 | }, |
13715 | { | 13732 | { |
13716 | .cmd = NL80211_CMD_GET_MPATH, | 13733 | .cmd = NL80211_CMD_GET_MPATH, |
13734 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13717 | .doit = nl80211_get_mpath, | 13735 | .doit = nl80211_get_mpath, |
13718 | .dumpit = nl80211_dump_mpath, | 13736 | .dumpit = nl80211_dump_mpath, |
13719 | .flags = GENL_UNS_ADMIN_PERM, | 13737 | .flags = GENL_UNS_ADMIN_PERM, |
@@ -13722,6 +13740,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13722 | }, | 13740 | }, |
13723 | { | 13741 | { |
13724 | .cmd = NL80211_CMD_GET_MPP, | 13742 | .cmd = NL80211_CMD_GET_MPP, |
13743 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13725 | .doit = nl80211_get_mpp, | 13744 | .doit = nl80211_get_mpp, |
13726 | .dumpit = nl80211_dump_mpp, | 13745 | .dumpit = nl80211_dump_mpp, |
13727 | .flags = GENL_UNS_ADMIN_PERM, | 13746 | .flags = GENL_UNS_ADMIN_PERM, |
@@ -13730,6 +13749,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13730 | }, | 13749 | }, |
13731 | { | 13750 | { |
13732 | .cmd = NL80211_CMD_SET_MPATH, | 13751 | .cmd = NL80211_CMD_SET_MPATH, |
13752 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13733 | .doit = nl80211_set_mpath, | 13753 | .doit = nl80211_set_mpath, |
13734 | .flags = GENL_UNS_ADMIN_PERM, | 13754 | .flags = GENL_UNS_ADMIN_PERM, |
13735 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13755 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13737,6 +13757,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13737 | }, | 13757 | }, |
13738 | { | 13758 | { |
13739 | .cmd = NL80211_CMD_NEW_MPATH, | 13759 | .cmd = NL80211_CMD_NEW_MPATH, |
13760 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13740 | .doit = nl80211_new_mpath, | 13761 | .doit = nl80211_new_mpath, |
13741 | .flags = GENL_UNS_ADMIN_PERM, | 13762 | .flags = GENL_UNS_ADMIN_PERM, |
13742 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13763 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13744,6 +13765,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13744 | }, | 13765 | }, |
13745 | { | 13766 | { |
13746 | .cmd = NL80211_CMD_DEL_MPATH, | 13767 | .cmd = NL80211_CMD_DEL_MPATH, |
13768 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13747 | .doit = nl80211_del_mpath, | 13769 | .doit = nl80211_del_mpath, |
13748 | .flags = GENL_UNS_ADMIN_PERM, | 13770 | .flags = GENL_UNS_ADMIN_PERM, |
13749 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13771 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13751,6 +13773,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13751 | }, | 13773 | }, |
13752 | { | 13774 | { |
13753 | .cmd = NL80211_CMD_SET_BSS, | 13775 | .cmd = NL80211_CMD_SET_BSS, |
13776 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13754 | .doit = nl80211_set_bss, | 13777 | .doit = nl80211_set_bss, |
13755 | .flags = GENL_UNS_ADMIN_PERM, | 13778 | .flags = GENL_UNS_ADMIN_PERM, |
13756 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13779 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13758,6 +13781,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13758 | }, | 13781 | }, |
13759 | { | 13782 | { |
13760 | .cmd = NL80211_CMD_GET_REG, | 13783 | .cmd = NL80211_CMD_GET_REG, |
13784 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13761 | .doit = nl80211_get_reg_do, | 13785 | .doit = nl80211_get_reg_do, |
13762 | .dumpit = nl80211_get_reg_dump, | 13786 | .dumpit = nl80211_get_reg_dump, |
13763 | .internal_flags = NL80211_FLAG_NEED_RTNL, | 13787 | .internal_flags = NL80211_FLAG_NEED_RTNL, |
@@ -13766,6 +13790,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13766 | #ifdef CONFIG_CFG80211_CRDA_SUPPORT | 13790 | #ifdef CONFIG_CFG80211_CRDA_SUPPORT |
13767 | { | 13791 | { |
13768 | .cmd = NL80211_CMD_SET_REG, | 13792 | .cmd = NL80211_CMD_SET_REG, |
13793 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13769 | .doit = nl80211_set_reg, | 13794 | .doit = nl80211_set_reg, |
13770 | .flags = GENL_ADMIN_PERM, | 13795 | .flags = GENL_ADMIN_PERM, |
13771 | .internal_flags = NL80211_FLAG_NEED_RTNL, | 13796 | .internal_flags = NL80211_FLAG_NEED_RTNL, |
@@ -13773,16 +13798,19 @@ static const struct genl_ops nl80211_ops[] = { | |||
13773 | #endif | 13798 | #endif |
13774 | { | 13799 | { |
13775 | .cmd = NL80211_CMD_REQ_SET_REG, | 13800 | .cmd = NL80211_CMD_REQ_SET_REG, |
13801 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13776 | .doit = nl80211_req_set_reg, | 13802 | .doit = nl80211_req_set_reg, |
13777 | .flags = GENL_ADMIN_PERM, | 13803 | .flags = GENL_ADMIN_PERM, |
13778 | }, | 13804 | }, |
13779 | { | 13805 | { |
13780 | .cmd = NL80211_CMD_RELOAD_REGDB, | 13806 | .cmd = NL80211_CMD_RELOAD_REGDB, |
13807 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13781 | .doit = nl80211_reload_regdb, | 13808 | .doit = nl80211_reload_regdb, |
13782 | .flags = GENL_ADMIN_PERM, | 13809 | .flags = GENL_ADMIN_PERM, |
13783 | }, | 13810 | }, |
13784 | { | 13811 | { |
13785 | .cmd = NL80211_CMD_GET_MESH_CONFIG, | 13812 | .cmd = NL80211_CMD_GET_MESH_CONFIG, |
13813 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13786 | .doit = nl80211_get_mesh_config, | 13814 | .doit = nl80211_get_mesh_config, |
13787 | /* can be retrieved by unprivileged users */ | 13815 | /* can be retrieved by unprivileged users */ |
13788 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13816 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13790,6 +13818,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13790 | }, | 13818 | }, |
13791 | { | 13819 | { |
13792 | .cmd = NL80211_CMD_SET_MESH_CONFIG, | 13820 | .cmd = NL80211_CMD_SET_MESH_CONFIG, |
13821 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13793 | .doit = nl80211_update_mesh_config, | 13822 | .doit = nl80211_update_mesh_config, |
13794 | .flags = GENL_UNS_ADMIN_PERM, | 13823 | .flags = GENL_UNS_ADMIN_PERM, |
13795 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13824 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13797,6 +13826,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13797 | }, | 13826 | }, |
13798 | { | 13827 | { |
13799 | .cmd = NL80211_CMD_TRIGGER_SCAN, | 13828 | .cmd = NL80211_CMD_TRIGGER_SCAN, |
13829 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13800 | .doit = nl80211_trigger_scan, | 13830 | .doit = nl80211_trigger_scan, |
13801 | .flags = GENL_UNS_ADMIN_PERM, | 13831 | .flags = GENL_UNS_ADMIN_PERM, |
13802 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 13832 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -13804,6 +13834,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13804 | }, | 13834 | }, |
13805 | { | 13835 | { |
13806 | .cmd = NL80211_CMD_ABORT_SCAN, | 13836 | .cmd = NL80211_CMD_ABORT_SCAN, |
13837 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13807 | .doit = nl80211_abort_scan, | 13838 | .doit = nl80211_abort_scan, |
13808 | .flags = GENL_UNS_ADMIN_PERM, | 13839 | .flags = GENL_UNS_ADMIN_PERM, |
13809 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 13840 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -13811,10 +13842,12 @@ static const struct genl_ops nl80211_ops[] = { | |||
13811 | }, | 13842 | }, |
13812 | { | 13843 | { |
13813 | .cmd = NL80211_CMD_GET_SCAN, | 13844 | .cmd = NL80211_CMD_GET_SCAN, |
13845 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13814 | .dumpit = nl80211_dump_scan, | 13846 | .dumpit = nl80211_dump_scan, |
13815 | }, | 13847 | }, |
13816 | { | 13848 | { |
13817 | .cmd = NL80211_CMD_START_SCHED_SCAN, | 13849 | .cmd = NL80211_CMD_START_SCHED_SCAN, |
13850 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13818 | .doit = nl80211_start_sched_scan, | 13851 | .doit = nl80211_start_sched_scan, |
13819 | .flags = GENL_UNS_ADMIN_PERM, | 13852 | .flags = GENL_UNS_ADMIN_PERM, |
13820 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13853 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13822,6 +13855,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13822 | }, | 13855 | }, |
13823 | { | 13856 | { |
13824 | .cmd = NL80211_CMD_STOP_SCHED_SCAN, | 13857 | .cmd = NL80211_CMD_STOP_SCHED_SCAN, |
13858 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13825 | .doit = nl80211_stop_sched_scan, | 13859 | .doit = nl80211_stop_sched_scan, |
13826 | .flags = GENL_UNS_ADMIN_PERM, | 13860 | .flags = GENL_UNS_ADMIN_PERM, |
13827 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13861 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13829,6 +13863,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13829 | }, | 13863 | }, |
13830 | { | 13864 | { |
13831 | .cmd = NL80211_CMD_AUTHENTICATE, | 13865 | .cmd = NL80211_CMD_AUTHENTICATE, |
13866 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13832 | .doit = nl80211_authenticate, | 13867 | .doit = nl80211_authenticate, |
13833 | .flags = GENL_UNS_ADMIN_PERM, | 13868 | .flags = GENL_UNS_ADMIN_PERM, |
13834 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13869 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13837,6 +13872,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13837 | }, | 13872 | }, |
13838 | { | 13873 | { |
13839 | .cmd = NL80211_CMD_ASSOCIATE, | 13874 | .cmd = NL80211_CMD_ASSOCIATE, |
13875 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13840 | .doit = nl80211_associate, | 13876 | .doit = nl80211_associate, |
13841 | .flags = GENL_UNS_ADMIN_PERM, | 13877 | .flags = GENL_UNS_ADMIN_PERM, |
13842 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13878 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13845,6 +13881,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13845 | }, | 13881 | }, |
13846 | { | 13882 | { |
13847 | .cmd = NL80211_CMD_DEAUTHENTICATE, | 13883 | .cmd = NL80211_CMD_DEAUTHENTICATE, |
13884 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13848 | .doit = nl80211_deauthenticate, | 13885 | .doit = nl80211_deauthenticate, |
13849 | .flags = GENL_UNS_ADMIN_PERM, | 13886 | .flags = GENL_UNS_ADMIN_PERM, |
13850 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13887 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13852,6 +13889,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13852 | }, | 13889 | }, |
13853 | { | 13890 | { |
13854 | .cmd = NL80211_CMD_DISASSOCIATE, | 13891 | .cmd = NL80211_CMD_DISASSOCIATE, |
13892 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13855 | .doit = nl80211_disassociate, | 13893 | .doit = nl80211_disassociate, |
13856 | .flags = GENL_UNS_ADMIN_PERM, | 13894 | .flags = GENL_UNS_ADMIN_PERM, |
13857 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13895 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13859,6 +13897,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13859 | }, | 13897 | }, |
13860 | { | 13898 | { |
13861 | .cmd = NL80211_CMD_JOIN_IBSS, | 13899 | .cmd = NL80211_CMD_JOIN_IBSS, |
13900 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13862 | .doit = nl80211_join_ibss, | 13901 | .doit = nl80211_join_ibss, |
13863 | .flags = GENL_UNS_ADMIN_PERM, | 13902 | .flags = GENL_UNS_ADMIN_PERM, |
13864 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13903 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13866,6 +13905,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13866 | }, | 13905 | }, |
13867 | { | 13906 | { |
13868 | .cmd = NL80211_CMD_LEAVE_IBSS, | 13907 | .cmd = NL80211_CMD_LEAVE_IBSS, |
13908 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13869 | .doit = nl80211_leave_ibss, | 13909 | .doit = nl80211_leave_ibss, |
13870 | .flags = GENL_UNS_ADMIN_PERM, | 13910 | .flags = GENL_UNS_ADMIN_PERM, |
13871 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13911 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13874,6 +13914,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13874 | #ifdef CONFIG_NL80211_TESTMODE | 13914 | #ifdef CONFIG_NL80211_TESTMODE |
13875 | { | 13915 | { |
13876 | .cmd = NL80211_CMD_TESTMODE, | 13916 | .cmd = NL80211_CMD_TESTMODE, |
13917 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13877 | .doit = nl80211_testmode_do, | 13918 | .doit = nl80211_testmode_do, |
13878 | .dumpit = nl80211_testmode_dump, | 13919 | .dumpit = nl80211_testmode_dump, |
13879 | .flags = GENL_UNS_ADMIN_PERM, | 13920 | .flags = GENL_UNS_ADMIN_PERM, |
@@ -13883,6 +13924,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13883 | #endif | 13924 | #endif |
13884 | { | 13925 | { |
13885 | .cmd = NL80211_CMD_CONNECT, | 13926 | .cmd = NL80211_CMD_CONNECT, |
13927 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13886 | .doit = nl80211_connect, | 13928 | .doit = nl80211_connect, |
13887 | .flags = GENL_UNS_ADMIN_PERM, | 13929 | .flags = GENL_UNS_ADMIN_PERM, |
13888 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13930 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13891,6 +13933,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13891 | }, | 13933 | }, |
13892 | { | 13934 | { |
13893 | .cmd = NL80211_CMD_UPDATE_CONNECT_PARAMS, | 13935 | .cmd = NL80211_CMD_UPDATE_CONNECT_PARAMS, |
13936 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13894 | .doit = nl80211_update_connect_params, | 13937 | .doit = nl80211_update_connect_params, |
13895 | .flags = GENL_ADMIN_PERM, | 13938 | .flags = GENL_ADMIN_PERM, |
13896 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13939 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13899,6 +13942,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13899 | }, | 13942 | }, |
13900 | { | 13943 | { |
13901 | .cmd = NL80211_CMD_DISCONNECT, | 13944 | .cmd = NL80211_CMD_DISCONNECT, |
13945 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13902 | .doit = nl80211_disconnect, | 13946 | .doit = nl80211_disconnect, |
13903 | .flags = GENL_UNS_ADMIN_PERM, | 13947 | .flags = GENL_UNS_ADMIN_PERM, |
13904 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13948 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13906,6 +13950,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13906 | }, | 13950 | }, |
13907 | { | 13951 | { |
13908 | .cmd = NL80211_CMD_SET_WIPHY_NETNS, | 13952 | .cmd = NL80211_CMD_SET_WIPHY_NETNS, |
13953 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13909 | .doit = nl80211_wiphy_netns, | 13954 | .doit = nl80211_wiphy_netns, |
13910 | .flags = GENL_UNS_ADMIN_PERM, | 13955 | .flags = GENL_UNS_ADMIN_PERM, |
13911 | .internal_flags = NL80211_FLAG_NEED_WIPHY | | 13956 | .internal_flags = NL80211_FLAG_NEED_WIPHY | |
@@ -13913,10 +13958,12 @@ static const struct genl_ops nl80211_ops[] = { | |||
13913 | }, | 13958 | }, |
13914 | { | 13959 | { |
13915 | .cmd = NL80211_CMD_GET_SURVEY, | 13960 | .cmd = NL80211_CMD_GET_SURVEY, |
13961 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13916 | .dumpit = nl80211_dump_survey, | 13962 | .dumpit = nl80211_dump_survey, |
13917 | }, | 13963 | }, |
13918 | { | 13964 | { |
13919 | .cmd = NL80211_CMD_SET_PMKSA, | 13965 | .cmd = NL80211_CMD_SET_PMKSA, |
13966 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13920 | .doit = nl80211_setdel_pmksa, | 13967 | .doit = nl80211_setdel_pmksa, |
13921 | .flags = GENL_UNS_ADMIN_PERM, | 13968 | .flags = GENL_UNS_ADMIN_PERM, |
13922 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13969 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13925,6 +13972,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13925 | }, | 13972 | }, |
13926 | { | 13973 | { |
13927 | .cmd = NL80211_CMD_DEL_PMKSA, | 13974 | .cmd = NL80211_CMD_DEL_PMKSA, |
13975 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13928 | .doit = nl80211_setdel_pmksa, | 13976 | .doit = nl80211_setdel_pmksa, |
13929 | .flags = GENL_UNS_ADMIN_PERM, | 13977 | .flags = GENL_UNS_ADMIN_PERM, |
13930 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13978 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13932,6 +13980,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13932 | }, | 13980 | }, |
13933 | { | 13981 | { |
13934 | .cmd = NL80211_CMD_FLUSH_PMKSA, | 13982 | .cmd = NL80211_CMD_FLUSH_PMKSA, |
13983 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13935 | .doit = nl80211_flush_pmksa, | 13984 | .doit = nl80211_flush_pmksa, |
13936 | .flags = GENL_UNS_ADMIN_PERM, | 13985 | .flags = GENL_UNS_ADMIN_PERM, |
13937 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 13986 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -13939,6 +13988,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13939 | }, | 13988 | }, |
13940 | { | 13989 | { |
13941 | .cmd = NL80211_CMD_REMAIN_ON_CHANNEL, | 13990 | .cmd = NL80211_CMD_REMAIN_ON_CHANNEL, |
13991 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13942 | .doit = nl80211_remain_on_channel, | 13992 | .doit = nl80211_remain_on_channel, |
13943 | .flags = GENL_UNS_ADMIN_PERM, | 13993 | .flags = GENL_UNS_ADMIN_PERM, |
13944 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 13994 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -13946,6 +13996,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13946 | }, | 13996 | }, |
13947 | { | 13997 | { |
13948 | .cmd = NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL, | 13998 | .cmd = NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL, |
13999 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13949 | .doit = nl80211_cancel_remain_on_channel, | 14000 | .doit = nl80211_cancel_remain_on_channel, |
13950 | .flags = GENL_UNS_ADMIN_PERM, | 14001 | .flags = GENL_UNS_ADMIN_PERM, |
13951 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14002 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -13953,6 +14004,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13953 | }, | 14004 | }, |
13954 | { | 14005 | { |
13955 | .cmd = NL80211_CMD_SET_TX_BITRATE_MASK, | 14006 | .cmd = NL80211_CMD_SET_TX_BITRATE_MASK, |
14007 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13956 | .doit = nl80211_set_tx_bitrate_mask, | 14008 | .doit = nl80211_set_tx_bitrate_mask, |
13957 | .flags = GENL_UNS_ADMIN_PERM, | 14009 | .flags = GENL_UNS_ADMIN_PERM, |
13958 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14010 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -13960,6 +14012,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13960 | }, | 14012 | }, |
13961 | { | 14013 | { |
13962 | .cmd = NL80211_CMD_REGISTER_FRAME, | 14014 | .cmd = NL80211_CMD_REGISTER_FRAME, |
14015 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13963 | .doit = nl80211_register_mgmt, | 14016 | .doit = nl80211_register_mgmt, |
13964 | .flags = GENL_UNS_ADMIN_PERM, | 14017 | .flags = GENL_UNS_ADMIN_PERM, |
13965 | .internal_flags = NL80211_FLAG_NEED_WDEV | | 14018 | .internal_flags = NL80211_FLAG_NEED_WDEV | |
@@ -13967,6 +14020,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13967 | }, | 14020 | }, |
13968 | { | 14021 | { |
13969 | .cmd = NL80211_CMD_FRAME, | 14022 | .cmd = NL80211_CMD_FRAME, |
14023 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13970 | .doit = nl80211_tx_mgmt, | 14024 | .doit = nl80211_tx_mgmt, |
13971 | .flags = GENL_UNS_ADMIN_PERM, | 14025 | .flags = GENL_UNS_ADMIN_PERM, |
13972 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14026 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -13974,6 +14028,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13974 | }, | 14028 | }, |
13975 | { | 14029 | { |
13976 | .cmd = NL80211_CMD_FRAME_WAIT_CANCEL, | 14030 | .cmd = NL80211_CMD_FRAME_WAIT_CANCEL, |
14031 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13977 | .doit = nl80211_tx_mgmt_cancel_wait, | 14032 | .doit = nl80211_tx_mgmt_cancel_wait, |
13978 | .flags = GENL_UNS_ADMIN_PERM, | 14033 | .flags = GENL_UNS_ADMIN_PERM, |
13979 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14034 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -13981,6 +14036,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13981 | }, | 14036 | }, |
13982 | { | 14037 | { |
13983 | .cmd = NL80211_CMD_SET_POWER_SAVE, | 14038 | .cmd = NL80211_CMD_SET_POWER_SAVE, |
14039 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13984 | .doit = nl80211_set_power_save, | 14040 | .doit = nl80211_set_power_save, |
13985 | .flags = GENL_UNS_ADMIN_PERM, | 14041 | .flags = GENL_UNS_ADMIN_PERM, |
13986 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14042 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -13988,6 +14044,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13988 | }, | 14044 | }, |
13989 | { | 14045 | { |
13990 | .cmd = NL80211_CMD_GET_POWER_SAVE, | 14046 | .cmd = NL80211_CMD_GET_POWER_SAVE, |
14047 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13991 | .doit = nl80211_get_power_save, | 14048 | .doit = nl80211_get_power_save, |
13992 | /* can be retrieved by unprivileged users */ | 14049 | /* can be retrieved by unprivileged users */ |
13993 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14050 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -13995,6 +14052,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
13995 | }, | 14052 | }, |
13996 | { | 14053 | { |
13997 | .cmd = NL80211_CMD_SET_CQM, | 14054 | .cmd = NL80211_CMD_SET_CQM, |
14055 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
13998 | .doit = nl80211_set_cqm, | 14056 | .doit = nl80211_set_cqm, |
13999 | .flags = GENL_UNS_ADMIN_PERM, | 14057 | .flags = GENL_UNS_ADMIN_PERM, |
14000 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14058 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -14002,6 +14060,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14002 | }, | 14060 | }, |
14003 | { | 14061 | { |
14004 | .cmd = NL80211_CMD_SET_CHANNEL, | 14062 | .cmd = NL80211_CMD_SET_CHANNEL, |
14063 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14005 | .doit = nl80211_set_channel, | 14064 | .doit = nl80211_set_channel, |
14006 | .flags = GENL_UNS_ADMIN_PERM, | 14065 | .flags = GENL_UNS_ADMIN_PERM, |
14007 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14066 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -14009,6 +14068,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14009 | }, | 14068 | }, |
14010 | { | 14069 | { |
14011 | .cmd = NL80211_CMD_SET_WDS_PEER, | 14070 | .cmd = NL80211_CMD_SET_WDS_PEER, |
14071 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14012 | .doit = nl80211_set_wds_peer, | 14072 | .doit = nl80211_set_wds_peer, |
14013 | .flags = GENL_UNS_ADMIN_PERM, | 14073 | .flags = GENL_UNS_ADMIN_PERM, |
14014 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14074 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -14016,6 +14076,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14016 | }, | 14076 | }, |
14017 | { | 14077 | { |
14018 | .cmd = NL80211_CMD_JOIN_MESH, | 14078 | .cmd = NL80211_CMD_JOIN_MESH, |
14079 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14019 | .doit = nl80211_join_mesh, | 14080 | .doit = nl80211_join_mesh, |
14020 | .flags = GENL_UNS_ADMIN_PERM, | 14081 | .flags = GENL_UNS_ADMIN_PERM, |
14021 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14082 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14023,6 +14084,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14023 | }, | 14084 | }, |
14024 | { | 14085 | { |
14025 | .cmd = NL80211_CMD_LEAVE_MESH, | 14086 | .cmd = NL80211_CMD_LEAVE_MESH, |
14087 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14026 | .doit = nl80211_leave_mesh, | 14088 | .doit = nl80211_leave_mesh, |
14027 | .flags = GENL_UNS_ADMIN_PERM, | 14089 | .flags = GENL_UNS_ADMIN_PERM, |
14028 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14090 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14030,6 +14092,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14030 | }, | 14092 | }, |
14031 | { | 14093 | { |
14032 | .cmd = NL80211_CMD_JOIN_OCB, | 14094 | .cmd = NL80211_CMD_JOIN_OCB, |
14095 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14033 | .doit = nl80211_join_ocb, | 14096 | .doit = nl80211_join_ocb, |
14034 | .flags = GENL_UNS_ADMIN_PERM, | 14097 | .flags = GENL_UNS_ADMIN_PERM, |
14035 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14098 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14037,6 +14100,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14037 | }, | 14100 | }, |
14038 | { | 14101 | { |
14039 | .cmd = NL80211_CMD_LEAVE_OCB, | 14102 | .cmd = NL80211_CMD_LEAVE_OCB, |
14103 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14040 | .doit = nl80211_leave_ocb, | 14104 | .doit = nl80211_leave_ocb, |
14041 | .flags = GENL_UNS_ADMIN_PERM, | 14105 | .flags = GENL_UNS_ADMIN_PERM, |
14042 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14106 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14045,6 +14109,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14045 | #ifdef CONFIG_PM | 14109 | #ifdef CONFIG_PM |
14046 | { | 14110 | { |
14047 | .cmd = NL80211_CMD_GET_WOWLAN, | 14111 | .cmd = NL80211_CMD_GET_WOWLAN, |
14112 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14048 | .doit = nl80211_get_wowlan, | 14113 | .doit = nl80211_get_wowlan, |
14049 | /* can be retrieved by unprivileged users */ | 14114 | /* can be retrieved by unprivileged users */ |
14050 | .internal_flags = NL80211_FLAG_NEED_WIPHY | | 14115 | .internal_flags = NL80211_FLAG_NEED_WIPHY | |
@@ -14052,6 +14117,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14052 | }, | 14117 | }, |
14053 | { | 14118 | { |
14054 | .cmd = NL80211_CMD_SET_WOWLAN, | 14119 | .cmd = NL80211_CMD_SET_WOWLAN, |
14120 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14055 | .doit = nl80211_set_wowlan, | 14121 | .doit = nl80211_set_wowlan, |
14056 | .flags = GENL_UNS_ADMIN_PERM, | 14122 | .flags = GENL_UNS_ADMIN_PERM, |
14057 | .internal_flags = NL80211_FLAG_NEED_WIPHY | | 14123 | .internal_flags = NL80211_FLAG_NEED_WIPHY | |
@@ -14060,6 +14126,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14060 | #endif | 14126 | #endif |
14061 | { | 14127 | { |
14062 | .cmd = NL80211_CMD_SET_REKEY_OFFLOAD, | 14128 | .cmd = NL80211_CMD_SET_REKEY_OFFLOAD, |
14129 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14063 | .doit = nl80211_set_rekey_data, | 14130 | .doit = nl80211_set_rekey_data, |
14064 | .flags = GENL_UNS_ADMIN_PERM, | 14131 | .flags = GENL_UNS_ADMIN_PERM, |
14065 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14132 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14068,6 +14135,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14068 | }, | 14135 | }, |
14069 | { | 14136 | { |
14070 | .cmd = NL80211_CMD_TDLS_MGMT, | 14137 | .cmd = NL80211_CMD_TDLS_MGMT, |
14138 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14071 | .doit = nl80211_tdls_mgmt, | 14139 | .doit = nl80211_tdls_mgmt, |
14072 | .flags = GENL_UNS_ADMIN_PERM, | 14140 | .flags = GENL_UNS_ADMIN_PERM, |
14073 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14141 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14075,6 +14143,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14075 | }, | 14143 | }, |
14076 | { | 14144 | { |
14077 | .cmd = NL80211_CMD_TDLS_OPER, | 14145 | .cmd = NL80211_CMD_TDLS_OPER, |
14146 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14078 | .doit = nl80211_tdls_oper, | 14147 | .doit = nl80211_tdls_oper, |
14079 | .flags = GENL_UNS_ADMIN_PERM, | 14148 | .flags = GENL_UNS_ADMIN_PERM, |
14080 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14149 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14082,6 +14151,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14082 | }, | 14151 | }, |
14083 | { | 14152 | { |
14084 | .cmd = NL80211_CMD_UNEXPECTED_FRAME, | 14153 | .cmd = NL80211_CMD_UNEXPECTED_FRAME, |
14154 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14085 | .doit = nl80211_register_unexpected_frame, | 14155 | .doit = nl80211_register_unexpected_frame, |
14086 | .flags = GENL_UNS_ADMIN_PERM, | 14156 | .flags = GENL_UNS_ADMIN_PERM, |
14087 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14157 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -14089,6 +14159,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14089 | }, | 14159 | }, |
14090 | { | 14160 | { |
14091 | .cmd = NL80211_CMD_PROBE_CLIENT, | 14161 | .cmd = NL80211_CMD_PROBE_CLIENT, |
14162 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14092 | .doit = nl80211_probe_client, | 14163 | .doit = nl80211_probe_client, |
14093 | .flags = GENL_UNS_ADMIN_PERM, | 14164 | .flags = GENL_UNS_ADMIN_PERM, |
14094 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14165 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14096,6 +14167,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14096 | }, | 14167 | }, |
14097 | { | 14168 | { |
14098 | .cmd = NL80211_CMD_REGISTER_BEACONS, | 14169 | .cmd = NL80211_CMD_REGISTER_BEACONS, |
14170 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14099 | .doit = nl80211_register_beacons, | 14171 | .doit = nl80211_register_beacons, |
14100 | .flags = GENL_UNS_ADMIN_PERM, | 14172 | .flags = GENL_UNS_ADMIN_PERM, |
14101 | .internal_flags = NL80211_FLAG_NEED_WIPHY | | 14173 | .internal_flags = NL80211_FLAG_NEED_WIPHY | |
@@ -14103,6 +14175,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14103 | }, | 14175 | }, |
14104 | { | 14176 | { |
14105 | .cmd = NL80211_CMD_SET_NOACK_MAP, | 14177 | .cmd = NL80211_CMD_SET_NOACK_MAP, |
14178 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14106 | .doit = nl80211_set_noack_map, | 14179 | .doit = nl80211_set_noack_map, |
14107 | .flags = GENL_UNS_ADMIN_PERM, | 14180 | .flags = GENL_UNS_ADMIN_PERM, |
14108 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14181 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -14110,6 +14183,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14110 | }, | 14183 | }, |
14111 | { | 14184 | { |
14112 | .cmd = NL80211_CMD_START_P2P_DEVICE, | 14185 | .cmd = NL80211_CMD_START_P2P_DEVICE, |
14186 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14113 | .doit = nl80211_start_p2p_device, | 14187 | .doit = nl80211_start_p2p_device, |
14114 | .flags = GENL_UNS_ADMIN_PERM, | 14188 | .flags = GENL_UNS_ADMIN_PERM, |
14115 | .internal_flags = NL80211_FLAG_NEED_WDEV | | 14189 | .internal_flags = NL80211_FLAG_NEED_WDEV | |
@@ -14117,6 +14191,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14117 | }, | 14191 | }, |
14118 | { | 14192 | { |
14119 | .cmd = NL80211_CMD_STOP_P2P_DEVICE, | 14193 | .cmd = NL80211_CMD_STOP_P2P_DEVICE, |
14194 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14120 | .doit = nl80211_stop_p2p_device, | 14195 | .doit = nl80211_stop_p2p_device, |
14121 | .flags = GENL_UNS_ADMIN_PERM, | 14196 | .flags = GENL_UNS_ADMIN_PERM, |
14122 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14197 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -14124,6 +14199,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14124 | }, | 14199 | }, |
14125 | { | 14200 | { |
14126 | .cmd = NL80211_CMD_START_NAN, | 14201 | .cmd = NL80211_CMD_START_NAN, |
14202 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14127 | .doit = nl80211_start_nan, | 14203 | .doit = nl80211_start_nan, |
14128 | .flags = GENL_ADMIN_PERM, | 14204 | .flags = GENL_ADMIN_PERM, |
14129 | .internal_flags = NL80211_FLAG_NEED_WDEV | | 14205 | .internal_flags = NL80211_FLAG_NEED_WDEV | |
@@ -14131,6 +14207,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14131 | }, | 14207 | }, |
14132 | { | 14208 | { |
14133 | .cmd = NL80211_CMD_STOP_NAN, | 14209 | .cmd = NL80211_CMD_STOP_NAN, |
14210 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14134 | .doit = nl80211_stop_nan, | 14211 | .doit = nl80211_stop_nan, |
14135 | .flags = GENL_ADMIN_PERM, | 14212 | .flags = GENL_ADMIN_PERM, |
14136 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14213 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -14138,6 +14215,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14138 | }, | 14215 | }, |
14139 | { | 14216 | { |
14140 | .cmd = NL80211_CMD_ADD_NAN_FUNCTION, | 14217 | .cmd = NL80211_CMD_ADD_NAN_FUNCTION, |
14218 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14141 | .doit = nl80211_nan_add_func, | 14219 | .doit = nl80211_nan_add_func, |
14142 | .flags = GENL_ADMIN_PERM, | 14220 | .flags = GENL_ADMIN_PERM, |
14143 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14221 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -14145,6 +14223,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14145 | }, | 14223 | }, |
14146 | { | 14224 | { |
14147 | .cmd = NL80211_CMD_DEL_NAN_FUNCTION, | 14225 | .cmd = NL80211_CMD_DEL_NAN_FUNCTION, |
14226 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14148 | .doit = nl80211_nan_del_func, | 14227 | .doit = nl80211_nan_del_func, |
14149 | .flags = GENL_ADMIN_PERM, | 14228 | .flags = GENL_ADMIN_PERM, |
14150 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14229 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -14152,6 +14231,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14152 | }, | 14231 | }, |
14153 | { | 14232 | { |
14154 | .cmd = NL80211_CMD_CHANGE_NAN_CONFIG, | 14233 | .cmd = NL80211_CMD_CHANGE_NAN_CONFIG, |
14234 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14155 | .doit = nl80211_nan_change_config, | 14235 | .doit = nl80211_nan_change_config, |
14156 | .flags = GENL_ADMIN_PERM, | 14236 | .flags = GENL_ADMIN_PERM, |
14157 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14237 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -14159,6 +14239,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14159 | }, | 14239 | }, |
14160 | { | 14240 | { |
14161 | .cmd = NL80211_CMD_SET_MCAST_RATE, | 14241 | .cmd = NL80211_CMD_SET_MCAST_RATE, |
14242 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14162 | .doit = nl80211_set_mcast_rate, | 14243 | .doit = nl80211_set_mcast_rate, |
14163 | .flags = GENL_UNS_ADMIN_PERM, | 14244 | .flags = GENL_UNS_ADMIN_PERM, |
14164 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14245 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -14166,6 +14247,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14166 | }, | 14247 | }, |
14167 | { | 14248 | { |
14168 | .cmd = NL80211_CMD_SET_MAC_ACL, | 14249 | .cmd = NL80211_CMD_SET_MAC_ACL, |
14250 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14169 | .doit = nl80211_set_mac_acl, | 14251 | .doit = nl80211_set_mac_acl, |
14170 | .flags = GENL_UNS_ADMIN_PERM, | 14252 | .flags = GENL_UNS_ADMIN_PERM, |
14171 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14253 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -14173,6 +14255,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14173 | }, | 14255 | }, |
14174 | { | 14256 | { |
14175 | .cmd = NL80211_CMD_RADAR_DETECT, | 14257 | .cmd = NL80211_CMD_RADAR_DETECT, |
14258 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14176 | .doit = nl80211_start_radar_detection, | 14259 | .doit = nl80211_start_radar_detection, |
14177 | .flags = GENL_UNS_ADMIN_PERM, | 14260 | .flags = GENL_UNS_ADMIN_PERM, |
14178 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14261 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14180,10 +14263,12 @@ static const struct genl_ops nl80211_ops[] = { | |||
14180 | }, | 14263 | }, |
14181 | { | 14264 | { |
14182 | .cmd = NL80211_CMD_GET_PROTOCOL_FEATURES, | 14265 | .cmd = NL80211_CMD_GET_PROTOCOL_FEATURES, |
14266 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14183 | .doit = nl80211_get_protocol_features, | 14267 | .doit = nl80211_get_protocol_features, |
14184 | }, | 14268 | }, |
14185 | { | 14269 | { |
14186 | .cmd = NL80211_CMD_UPDATE_FT_IES, | 14270 | .cmd = NL80211_CMD_UPDATE_FT_IES, |
14271 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14187 | .doit = nl80211_update_ft_ies, | 14272 | .doit = nl80211_update_ft_ies, |
14188 | .flags = GENL_UNS_ADMIN_PERM, | 14273 | .flags = GENL_UNS_ADMIN_PERM, |
14189 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14274 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14191,6 +14276,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14191 | }, | 14276 | }, |
14192 | { | 14277 | { |
14193 | .cmd = NL80211_CMD_CRIT_PROTOCOL_START, | 14278 | .cmd = NL80211_CMD_CRIT_PROTOCOL_START, |
14279 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14194 | .doit = nl80211_crit_protocol_start, | 14280 | .doit = nl80211_crit_protocol_start, |
14195 | .flags = GENL_UNS_ADMIN_PERM, | 14281 | .flags = GENL_UNS_ADMIN_PERM, |
14196 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14282 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -14198,6 +14284,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14198 | }, | 14284 | }, |
14199 | { | 14285 | { |
14200 | .cmd = NL80211_CMD_CRIT_PROTOCOL_STOP, | 14286 | .cmd = NL80211_CMD_CRIT_PROTOCOL_STOP, |
14287 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14201 | .doit = nl80211_crit_protocol_stop, | 14288 | .doit = nl80211_crit_protocol_stop, |
14202 | .flags = GENL_UNS_ADMIN_PERM, | 14289 | .flags = GENL_UNS_ADMIN_PERM, |
14203 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14290 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -14205,12 +14292,14 @@ static const struct genl_ops nl80211_ops[] = { | |||
14205 | }, | 14292 | }, |
14206 | { | 14293 | { |
14207 | .cmd = NL80211_CMD_GET_COALESCE, | 14294 | .cmd = NL80211_CMD_GET_COALESCE, |
14295 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14208 | .doit = nl80211_get_coalesce, | 14296 | .doit = nl80211_get_coalesce, |
14209 | .internal_flags = NL80211_FLAG_NEED_WIPHY | | 14297 | .internal_flags = NL80211_FLAG_NEED_WIPHY | |
14210 | NL80211_FLAG_NEED_RTNL, | 14298 | NL80211_FLAG_NEED_RTNL, |
14211 | }, | 14299 | }, |
14212 | { | 14300 | { |
14213 | .cmd = NL80211_CMD_SET_COALESCE, | 14301 | .cmd = NL80211_CMD_SET_COALESCE, |
14302 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14214 | .doit = nl80211_set_coalesce, | 14303 | .doit = nl80211_set_coalesce, |
14215 | .flags = GENL_UNS_ADMIN_PERM, | 14304 | .flags = GENL_UNS_ADMIN_PERM, |
14216 | .internal_flags = NL80211_FLAG_NEED_WIPHY | | 14305 | .internal_flags = NL80211_FLAG_NEED_WIPHY | |
@@ -14218,6 +14307,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14218 | }, | 14307 | }, |
14219 | { | 14308 | { |
14220 | .cmd = NL80211_CMD_CHANNEL_SWITCH, | 14309 | .cmd = NL80211_CMD_CHANNEL_SWITCH, |
14310 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14221 | .doit = nl80211_channel_switch, | 14311 | .doit = nl80211_channel_switch, |
14222 | .flags = GENL_UNS_ADMIN_PERM, | 14312 | .flags = GENL_UNS_ADMIN_PERM, |
14223 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14313 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14225,6 +14315,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14225 | }, | 14315 | }, |
14226 | { | 14316 | { |
14227 | .cmd = NL80211_CMD_VENDOR, | 14317 | .cmd = NL80211_CMD_VENDOR, |
14318 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14228 | .doit = nl80211_vendor_cmd, | 14319 | .doit = nl80211_vendor_cmd, |
14229 | .dumpit = nl80211_vendor_cmd_dump, | 14320 | .dumpit = nl80211_vendor_cmd_dump, |
14230 | .flags = GENL_UNS_ADMIN_PERM, | 14321 | .flags = GENL_UNS_ADMIN_PERM, |
@@ -14234,6 +14325,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14234 | }, | 14325 | }, |
14235 | { | 14326 | { |
14236 | .cmd = NL80211_CMD_SET_QOS_MAP, | 14327 | .cmd = NL80211_CMD_SET_QOS_MAP, |
14328 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14237 | .doit = nl80211_set_qos_map, | 14329 | .doit = nl80211_set_qos_map, |
14238 | .flags = GENL_UNS_ADMIN_PERM, | 14330 | .flags = GENL_UNS_ADMIN_PERM, |
14239 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14331 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14241,6 +14333,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14241 | }, | 14333 | }, |
14242 | { | 14334 | { |
14243 | .cmd = NL80211_CMD_ADD_TX_TS, | 14335 | .cmd = NL80211_CMD_ADD_TX_TS, |
14336 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14244 | .doit = nl80211_add_tx_ts, | 14337 | .doit = nl80211_add_tx_ts, |
14245 | .flags = GENL_UNS_ADMIN_PERM, | 14338 | .flags = GENL_UNS_ADMIN_PERM, |
14246 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14339 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14248,6 +14341,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14248 | }, | 14341 | }, |
14249 | { | 14342 | { |
14250 | .cmd = NL80211_CMD_DEL_TX_TS, | 14343 | .cmd = NL80211_CMD_DEL_TX_TS, |
14344 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14251 | .doit = nl80211_del_tx_ts, | 14345 | .doit = nl80211_del_tx_ts, |
14252 | .flags = GENL_UNS_ADMIN_PERM, | 14346 | .flags = GENL_UNS_ADMIN_PERM, |
14253 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14347 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14255,6 +14349,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14255 | }, | 14349 | }, |
14256 | { | 14350 | { |
14257 | .cmd = NL80211_CMD_TDLS_CHANNEL_SWITCH, | 14351 | .cmd = NL80211_CMD_TDLS_CHANNEL_SWITCH, |
14352 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14258 | .doit = nl80211_tdls_channel_switch, | 14353 | .doit = nl80211_tdls_channel_switch, |
14259 | .flags = GENL_UNS_ADMIN_PERM, | 14354 | .flags = GENL_UNS_ADMIN_PERM, |
14260 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14355 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14262,6 +14357,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14262 | }, | 14357 | }, |
14263 | { | 14358 | { |
14264 | .cmd = NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH, | 14359 | .cmd = NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH, |
14360 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14265 | .doit = nl80211_tdls_cancel_channel_switch, | 14361 | .doit = nl80211_tdls_cancel_channel_switch, |
14266 | .flags = GENL_UNS_ADMIN_PERM, | 14362 | .flags = GENL_UNS_ADMIN_PERM, |
14267 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14363 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14269,6 +14365,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14269 | }, | 14365 | }, |
14270 | { | 14366 | { |
14271 | .cmd = NL80211_CMD_SET_MULTICAST_TO_UNICAST, | 14367 | .cmd = NL80211_CMD_SET_MULTICAST_TO_UNICAST, |
14368 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14272 | .doit = nl80211_set_multicast_to_unicast, | 14369 | .doit = nl80211_set_multicast_to_unicast, |
14273 | .flags = GENL_UNS_ADMIN_PERM, | 14370 | .flags = GENL_UNS_ADMIN_PERM, |
14274 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14371 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
@@ -14276,6 +14373,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14276 | }, | 14373 | }, |
14277 | { | 14374 | { |
14278 | .cmd = NL80211_CMD_SET_PMK, | 14375 | .cmd = NL80211_CMD_SET_PMK, |
14376 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14279 | .doit = nl80211_set_pmk, | 14377 | .doit = nl80211_set_pmk, |
14280 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14378 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
14281 | NL80211_FLAG_NEED_RTNL | | 14379 | NL80211_FLAG_NEED_RTNL | |
@@ -14283,12 +14381,14 @@ static const struct genl_ops nl80211_ops[] = { | |||
14283 | }, | 14381 | }, |
14284 | { | 14382 | { |
14285 | .cmd = NL80211_CMD_DEL_PMK, | 14383 | .cmd = NL80211_CMD_DEL_PMK, |
14384 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14286 | .doit = nl80211_del_pmk, | 14385 | .doit = nl80211_del_pmk, |
14287 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14386 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
14288 | NL80211_FLAG_NEED_RTNL, | 14387 | NL80211_FLAG_NEED_RTNL, |
14289 | }, | 14388 | }, |
14290 | { | 14389 | { |
14291 | .cmd = NL80211_CMD_EXTERNAL_AUTH, | 14390 | .cmd = NL80211_CMD_EXTERNAL_AUTH, |
14391 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14292 | .doit = nl80211_external_auth, | 14392 | .doit = nl80211_external_auth, |
14293 | .flags = GENL_ADMIN_PERM, | 14393 | .flags = GENL_ADMIN_PERM, |
14294 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14394 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14296,6 +14396,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14296 | }, | 14396 | }, |
14297 | { | 14397 | { |
14298 | .cmd = NL80211_CMD_CONTROL_PORT_FRAME, | 14398 | .cmd = NL80211_CMD_CONTROL_PORT_FRAME, |
14399 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14299 | .doit = nl80211_tx_control_port, | 14400 | .doit = nl80211_tx_control_port, |
14300 | .flags = GENL_UNS_ADMIN_PERM, | 14401 | .flags = GENL_UNS_ADMIN_PERM, |
14301 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14402 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |
@@ -14303,12 +14404,14 @@ static const struct genl_ops nl80211_ops[] = { | |||
14303 | }, | 14404 | }, |
14304 | { | 14405 | { |
14305 | .cmd = NL80211_CMD_GET_FTM_RESPONDER_STATS, | 14406 | .cmd = NL80211_CMD_GET_FTM_RESPONDER_STATS, |
14407 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14306 | .doit = nl80211_get_ftm_responder_stats, | 14408 | .doit = nl80211_get_ftm_responder_stats, |
14307 | .internal_flags = NL80211_FLAG_NEED_NETDEV | | 14409 | .internal_flags = NL80211_FLAG_NEED_NETDEV | |
14308 | NL80211_FLAG_NEED_RTNL, | 14410 | NL80211_FLAG_NEED_RTNL, |
14309 | }, | 14411 | }, |
14310 | { | 14412 | { |
14311 | .cmd = NL80211_CMD_PEER_MEASUREMENT_START, | 14413 | .cmd = NL80211_CMD_PEER_MEASUREMENT_START, |
14414 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14312 | .doit = nl80211_pmsr_start, | 14415 | .doit = nl80211_pmsr_start, |
14313 | .flags = GENL_UNS_ADMIN_PERM, | 14416 | .flags = GENL_UNS_ADMIN_PERM, |
14314 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | | 14417 | .internal_flags = NL80211_FLAG_NEED_WDEV_UP | |
@@ -14316,6 +14419,7 @@ static const struct genl_ops nl80211_ops[] = { | |||
14316 | }, | 14419 | }, |
14317 | { | 14420 | { |
14318 | .cmd = NL80211_CMD_NOTIFY_RADAR, | 14421 | .cmd = NL80211_CMD_NOTIFY_RADAR, |
14422 | .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, | ||
14319 | .doit = nl80211_notify_radar_detection, | 14423 | .doit = nl80211_notify_radar_detection, |
14320 | .flags = GENL_UNS_ADMIN_PERM, | 14424 | .flags = GENL_UNS_ADMIN_PERM, |
14321 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | | 14425 | .internal_flags = NL80211_FLAG_NEED_NETDEV_UP | |