aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/devlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/devlink.c')
-rw-r--r--net/core/devlink.c43
1 files changed, 3 insertions, 40 deletions
diff --git a/net/core/devlink.c b/net/core/devlink.c
index 78e22cea4cc7..1a65cbf1ab05 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -3640,7 +3640,6 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb,
3640 struct netlink_callback *cb) 3640 struct netlink_callback *cb)
3641{ 3641{
3642 u64 ret_offset, start_offset, end_offset = 0; 3642 u64 ret_offset, start_offset, end_offset = 0;
3643 const struct genl_ops *ops = cb->data;
3644 struct devlink_region *region; 3643 struct devlink_region *region;
3645 struct nlattr *chunks_attr; 3644 struct nlattr *chunks_attr;
3646 const char *region_name; 3645 const char *region_name;
@@ -3657,7 +3656,8 @@ static int devlink_nl_cmd_region_read_dumpit(struct sk_buff *skb,
3657 return -ENOMEM; 3656 return -ENOMEM;
3658 3657
3659 err = nlmsg_parse(cb->nlh, GENL_HDRLEN + devlink_nl_family.hdrsize, 3658 err = nlmsg_parse(cb->nlh, GENL_HDRLEN + devlink_nl_family.hdrsize,
3660 attrs, DEVLINK_ATTR_MAX, ops->policy, cb->extack); 3659 attrs, DEVLINK_ATTR_MAX, devlink_nl_family.policy,
3660 cb->extack);
3661 if (err) 3661 if (err)
3662 goto out_free; 3662 goto out_free;
3663 3663
@@ -4923,7 +4923,6 @@ static const struct genl_ops devlink_nl_ops[] = {
4923 .cmd = DEVLINK_CMD_GET, 4923 .cmd = DEVLINK_CMD_GET,
4924 .doit = devlink_nl_cmd_get_doit, 4924 .doit = devlink_nl_cmd_get_doit,
4925 .dumpit = devlink_nl_cmd_get_dumpit, 4925 .dumpit = devlink_nl_cmd_get_dumpit,
4926 .policy = devlink_nl_policy,
4927 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 4926 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
4928 /* can be retrieved by unprivileged users */ 4927 /* can be retrieved by unprivileged users */
4929 }, 4928 },
@@ -4931,21 +4930,18 @@ static const struct genl_ops devlink_nl_ops[] = {
4931 .cmd = DEVLINK_CMD_PORT_GET, 4930 .cmd = DEVLINK_CMD_PORT_GET,
4932 .doit = devlink_nl_cmd_port_get_doit, 4931 .doit = devlink_nl_cmd_port_get_doit,
4933 .dumpit = devlink_nl_cmd_port_get_dumpit, 4932 .dumpit = devlink_nl_cmd_port_get_dumpit,
4934 .policy = devlink_nl_policy,
4935 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, 4933 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
4936 /* can be retrieved by unprivileged users */ 4934 /* can be retrieved by unprivileged users */
4937 }, 4935 },
4938 { 4936 {
4939 .cmd = DEVLINK_CMD_PORT_SET, 4937 .cmd = DEVLINK_CMD_PORT_SET,
4940 .doit = devlink_nl_cmd_port_set_doit, 4938 .doit = devlink_nl_cmd_port_set_doit,
4941 .policy = devlink_nl_policy,
4942 .flags = GENL_ADMIN_PERM, 4939 .flags = GENL_ADMIN_PERM,
4943 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, 4940 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
4944 }, 4941 },
4945 { 4942 {
4946 .cmd = DEVLINK_CMD_PORT_SPLIT, 4943 .cmd = DEVLINK_CMD_PORT_SPLIT,
4947 .doit = devlink_nl_cmd_port_split_doit, 4944 .doit = devlink_nl_cmd_port_split_doit,
4948 .policy = devlink_nl_policy,
4949 .flags = GENL_ADMIN_PERM, 4945 .flags = GENL_ADMIN_PERM,
4950 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 4946 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
4951 DEVLINK_NL_FLAG_NO_LOCK, 4947 DEVLINK_NL_FLAG_NO_LOCK,
@@ -4953,7 +4949,6 @@ static const struct genl_ops devlink_nl_ops[] = {
4953 { 4949 {
4954 .cmd = DEVLINK_CMD_PORT_UNSPLIT, 4950 .cmd = DEVLINK_CMD_PORT_UNSPLIT,
4955 .doit = devlink_nl_cmd_port_unsplit_doit, 4951 .doit = devlink_nl_cmd_port_unsplit_doit,
4956 .policy = devlink_nl_policy,
4957 .flags = GENL_ADMIN_PERM, 4952 .flags = GENL_ADMIN_PERM,
4958 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 4953 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
4959 DEVLINK_NL_FLAG_NO_LOCK, 4954 DEVLINK_NL_FLAG_NO_LOCK,
@@ -4962,7 +4957,6 @@ static const struct genl_ops devlink_nl_ops[] = {
4962 .cmd = DEVLINK_CMD_SB_GET, 4957 .cmd = DEVLINK_CMD_SB_GET,
4963 .doit = devlink_nl_cmd_sb_get_doit, 4958 .doit = devlink_nl_cmd_sb_get_doit,
4964 .dumpit = devlink_nl_cmd_sb_get_dumpit, 4959 .dumpit = devlink_nl_cmd_sb_get_dumpit,
4965 .policy = devlink_nl_policy,
4966 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 4960 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
4967 DEVLINK_NL_FLAG_NEED_SB, 4961 DEVLINK_NL_FLAG_NEED_SB,
4968 /* can be retrieved by unprivileged users */ 4962 /* can be retrieved by unprivileged users */
@@ -4971,7 +4965,6 @@ static const struct genl_ops devlink_nl_ops[] = {
4971 .cmd = DEVLINK_CMD_SB_POOL_GET, 4965 .cmd = DEVLINK_CMD_SB_POOL_GET,
4972 .doit = devlink_nl_cmd_sb_pool_get_doit, 4966 .doit = devlink_nl_cmd_sb_pool_get_doit,
4973 .dumpit = devlink_nl_cmd_sb_pool_get_dumpit, 4967 .dumpit = devlink_nl_cmd_sb_pool_get_dumpit,
4974 .policy = devlink_nl_policy,
4975 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 4968 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
4976 DEVLINK_NL_FLAG_NEED_SB, 4969 DEVLINK_NL_FLAG_NEED_SB,
4977 /* can be retrieved by unprivileged users */ 4970 /* can be retrieved by unprivileged users */
@@ -4979,7 +4972,6 @@ static const struct genl_ops devlink_nl_ops[] = {
4979 { 4972 {
4980 .cmd = DEVLINK_CMD_SB_POOL_SET, 4973 .cmd = DEVLINK_CMD_SB_POOL_SET,
4981 .doit = devlink_nl_cmd_sb_pool_set_doit, 4974 .doit = devlink_nl_cmd_sb_pool_set_doit,
4982 .policy = devlink_nl_policy,
4983 .flags = GENL_ADMIN_PERM, 4975 .flags = GENL_ADMIN_PERM,
4984 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 4976 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
4985 DEVLINK_NL_FLAG_NEED_SB, 4977 DEVLINK_NL_FLAG_NEED_SB,
@@ -4988,7 +4980,6 @@ static const struct genl_ops devlink_nl_ops[] = {
4988 .cmd = DEVLINK_CMD_SB_PORT_POOL_GET, 4980 .cmd = DEVLINK_CMD_SB_PORT_POOL_GET,
4989 .doit = devlink_nl_cmd_sb_port_pool_get_doit, 4981 .doit = devlink_nl_cmd_sb_port_pool_get_doit,
4990 .dumpit = devlink_nl_cmd_sb_port_pool_get_dumpit, 4982 .dumpit = devlink_nl_cmd_sb_port_pool_get_dumpit,
4991 .policy = devlink_nl_policy,
4992 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | 4983 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
4993 DEVLINK_NL_FLAG_NEED_SB, 4984 DEVLINK_NL_FLAG_NEED_SB,
4994 /* can be retrieved by unprivileged users */ 4985 /* can be retrieved by unprivileged users */
@@ -4996,7 +4987,6 @@ static const struct genl_ops devlink_nl_ops[] = {
4996 { 4987 {
4997 .cmd = DEVLINK_CMD_SB_PORT_POOL_SET, 4988 .cmd = DEVLINK_CMD_SB_PORT_POOL_SET,
4998 .doit = devlink_nl_cmd_sb_port_pool_set_doit, 4989 .doit = devlink_nl_cmd_sb_port_pool_set_doit,
4999 .policy = devlink_nl_policy,
5000 .flags = GENL_ADMIN_PERM, 4990 .flags = GENL_ADMIN_PERM,
5001 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | 4991 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
5002 DEVLINK_NL_FLAG_NEED_SB, 4992 DEVLINK_NL_FLAG_NEED_SB,
@@ -5005,7 +4995,6 @@ static const struct genl_ops devlink_nl_ops[] = {
5005 .cmd = DEVLINK_CMD_SB_TC_POOL_BIND_GET, 4995 .cmd = DEVLINK_CMD_SB_TC_POOL_BIND_GET,
5006 .doit = devlink_nl_cmd_sb_tc_pool_bind_get_doit, 4996 .doit = devlink_nl_cmd_sb_tc_pool_bind_get_doit,
5007 .dumpit = devlink_nl_cmd_sb_tc_pool_bind_get_dumpit, 4997 .dumpit = devlink_nl_cmd_sb_tc_pool_bind_get_dumpit,
5008 .policy = devlink_nl_policy,
5009 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | 4998 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
5010 DEVLINK_NL_FLAG_NEED_SB, 4999 DEVLINK_NL_FLAG_NEED_SB,
5011 /* can be retrieved by unprivileged users */ 5000 /* can be retrieved by unprivileged users */
@@ -5013,7 +5002,6 @@ static const struct genl_ops devlink_nl_ops[] = {
5013 { 5002 {
5014 .cmd = DEVLINK_CMD_SB_TC_POOL_BIND_SET, 5003 .cmd = DEVLINK_CMD_SB_TC_POOL_BIND_SET,
5015 .doit = devlink_nl_cmd_sb_tc_pool_bind_set_doit, 5004 .doit = devlink_nl_cmd_sb_tc_pool_bind_set_doit,
5016 .policy = devlink_nl_policy,
5017 .flags = GENL_ADMIN_PERM, 5005 .flags = GENL_ADMIN_PERM,
5018 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT | 5006 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
5019 DEVLINK_NL_FLAG_NEED_SB, 5007 DEVLINK_NL_FLAG_NEED_SB,
@@ -5021,7 +5009,6 @@ static const struct genl_ops devlink_nl_ops[] = {
5021 { 5009 {
5022 .cmd = DEVLINK_CMD_SB_OCC_SNAPSHOT, 5010 .cmd = DEVLINK_CMD_SB_OCC_SNAPSHOT,
5023 .doit = devlink_nl_cmd_sb_occ_snapshot_doit, 5011 .doit = devlink_nl_cmd_sb_occ_snapshot_doit,
5024 .policy = devlink_nl_policy,
5025 .flags = GENL_ADMIN_PERM, 5012 .flags = GENL_ADMIN_PERM,
5026 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 5013 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
5027 DEVLINK_NL_FLAG_NEED_SB, 5014 DEVLINK_NL_FLAG_NEED_SB,
@@ -5029,7 +5016,6 @@ static const struct genl_ops devlink_nl_ops[] = {
5029 { 5016 {
5030 .cmd = DEVLINK_CMD_SB_OCC_MAX_CLEAR, 5017 .cmd = DEVLINK_CMD_SB_OCC_MAX_CLEAR,
5031 .doit = devlink_nl_cmd_sb_occ_max_clear_doit, 5018 .doit = devlink_nl_cmd_sb_occ_max_clear_doit,
5032 .policy = devlink_nl_policy,
5033 .flags = GENL_ADMIN_PERM, 5019 .flags = GENL_ADMIN_PERM,
5034 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 5020 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
5035 DEVLINK_NL_FLAG_NEED_SB, 5021 DEVLINK_NL_FLAG_NEED_SB,
@@ -5037,14 +5023,12 @@ static const struct genl_ops devlink_nl_ops[] = {
5037 { 5023 {
5038 .cmd = DEVLINK_CMD_ESWITCH_GET, 5024 .cmd = DEVLINK_CMD_ESWITCH_GET,
5039 .doit = devlink_nl_cmd_eswitch_get_doit, 5025 .doit = devlink_nl_cmd_eswitch_get_doit,
5040 .policy = devlink_nl_policy,
5041 .flags = GENL_ADMIN_PERM, 5026 .flags = GENL_ADMIN_PERM,
5042 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5027 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5043 }, 5028 },
5044 { 5029 {
5045 .cmd = DEVLINK_CMD_ESWITCH_SET, 5030 .cmd = DEVLINK_CMD_ESWITCH_SET,
5046 .doit = devlink_nl_cmd_eswitch_set_doit, 5031 .doit = devlink_nl_cmd_eswitch_set_doit,
5047 .policy = devlink_nl_policy,
5048 .flags = GENL_ADMIN_PERM, 5032 .flags = GENL_ADMIN_PERM,
5049 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 5033 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
5050 DEVLINK_NL_FLAG_NO_LOCK, 5034 DEVLINK_NL_FLAG_NO_LOCK,
@@ -5052,49 +5036,42 @@ static const struct genl_ops devlink_nl_ops[] = {
5052 { 5036 {
5053 .cmd = DEVLINK_CMD_DPIPE_TABLE_GET, 5037 .cmd = DEVLINK_CMD_DPIPE_TABLE_GET,
5054 .doit = devlink_nl_cmd_dpipe_table_get, 5038 .doit = devlink_nl_cmd_dpipe_table_get,
5055 .policy = devlink_nl_policy,
5056 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5039 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5057 /* can be retrieved by unprivileged users */ 5040 /* can be retrieved by unprivileged users */
5058 }, 5041 },
5059 { 5042 {
5060 .cmd = DEVLINK_CMD_DPIPE_ENTRIES_GET, 5043 .cmd = DEVLINK_CMD_DPIPE_ENTRIES_GET,
5061 .doit = devlink_nl_cmd_dpipe_entries_get, 5044 .doit = devlink_nl_cmd_dpipe_entries_get,
5062 .policy = devlink_nl_policy,
5063 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5045 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5064 /* can be retrieved by unprivileged users */ 5046 /* can be retrieved by unprivileged users */
5065 }, 5047 },
5066 { 5048 {
5067 .cmd = DEVLINK_CMD_DPIPE_HEADERS_GET, 5049 .cmd = DEVLINK_CMD_DPIPE_HEADERS_GET,
5068 .doit = devlink_nl_cmd_dpipe_headers_get, 5050 .doit = devlink_nl_cmd_dpipe_headers_get,
5069 .policy = devlink_nl_policy,
5070 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5051 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5071 /* can be retrieved by unprivileged users */ 5052 /* can be retrieved by unprivileged users */
5072 }, 5053 },
5073 { 5054 {
5074 .cmd = DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET, 5055 .cmd = DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET,
5075 .doit = devlink_nl_cmd_dpipe_table_counters_set, 5056 .doit = devlink_nl_cmd_dpipe_table_counters_set,
5076 .policy = devlink_nl_policy,
5077 .flags = GENL_ADMIN_PERM, 5057 .flags = GENL_ADMIN_PERM,
5078 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5058 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5079 }, 5059 },
5080 { 5060 {
5081 .cmd = DEVLINK_CMD_RESOURCE_SET, 5061 .cmd = DEVLINK_CMD_RESOURCE_SET,
5082 .doit = devlink_nl_cmd_resource_set, 5062 .doit = devlink_nl_cmd_resource_set,
5083 .policy = devlink_nl_policy,
5084 .flags = GENL_ADMIN_PERM, 5063 .flags = GENL_ADMIN_PERM,
5085 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5064 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5086 }, 5065 },
5087 { 5066 {
5088 .cmd = DEVLINK_CMD_RESOURCE_DUMP, 5067 .cmd = DEVLINK_CMD_RESOURCE_DUMP,
5089 .doit = devlink_nl_cmd_resource_dump, 5068 .doit = devlink_nl_cmd_resource_dump,
5090 .policy = devlink_nl_policy,
5091 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5069 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5092 /* can be retrieved by unprivileged users */ 5070 /* can be retrieved by unprivileged users */
5093 }, 5071 },
5094 { 5072 {
5095 .cmd = DEVLINK_CMD_RELOAD, 5073 .cmd = DEVLINK_CMD_RELOAD,
5096 .doit = devlink_nl_cmd_reload, 5074 .doit = devlink_nl_cmd_reload,
5097 .policy = devlink_nl_policy,
5098 .flags = GENL_ADMIN_PERM, 5075 .flags = GENL_ADMIN_PERM,
5099 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 5076 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
5100 DEVLINK_NL_FLAG_NO_LOCK, 5077 DEVLINK_NL_FLAG_NO_LOCK,
@@ -5103,14 +5080,12 @@ static const struct genl_ops devlink_nl_ops[] = {
5103 .cmd = DEVLINK_CMD_PARAM_GET, 5080 .cmd = DEVLINK_CMD_PARAM_GET,
5104 .doit = devlink_nl_cmd_param_get_doit, 5081 .doit = devlink_nl_cmd_param_get_doit,
5105 .dumpit = devlink_nl_cmd_param_get_dumpit, 5082 .dumpit = devlink_nl_cmd_param_get_dumpit,
5106 .policy = devlink_nl_policy,
5107 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5083 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5108 /* can be retrieved by unprivileged users */ 5084 /* can be retrieved by unprivileged users */
5109 }, 5085 },
5110 { 5086 {
5111 .cmd = DEVLINK_CMD_PARAM_SET, 5087 .cmd = DEVLINK_CMD_PARAM_SET,
5112 .doit = devlink_nl_cmd_param_set_doit, 5088 .doit = devlink_nl_cmd_param_set_doit,
5113 .policy = devlink_nl_policy,
5114 .flags = GENL_ADMIN_PERM, 5089 .flags = GENL_ADMIN_PERM,
5115 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5090 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5116 }, 5091 },
@@ -5118,14 +5093,12 @@ static const struct genl_ops devlink_nl_ops[] = {
5118 .cmd = DEVLINK_CMD_PORT_PARAM_GET, 5093 .cmd = DEVLINK_CMD_PORT_PARAM_GET,
5119 .doit = devlink_nl_cmd_port_param_get_doit, 5094 .doit = devlink_nl_cmd_port_param_get_doit,
5120 .dumpit = devlink_nl_cmd_port_param_get_dumpit, 5095 .dumpit = devlink_nl_cmd_port_param_get_dumpit,
5121 .policy = devlink_nl_policy,
5122 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, 5096 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
5123 /* can be retrieved by unprivileged users */ 5097 /* can be retrieved by unprivileged users */
5124 }, 5098 },
5125 { 5099 {
5126 .cmd = DEVLINK_CMD_PORT_PARAM_SET, 5100 .cmd = DEVLINK_CMD_PORT_PARAM_SET,
5127 .doit = devlink_nl_cmd_port_param_set_doit, 5101 .doit = devlink_nl_cmd_port_param_set_doit,
5128 .policy = devlink_nl_policy,
5129 .flags = GENL_ADMIN_PERM, 5102 .flags = GENL_ADMIN_PERM,
5130 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT, 5103 .internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
5131 }, 5104 },
@@ -5133,21 +5106,18 @@ static const struct genl_ops devlink_nl_ops[] = {
5133 .cmd = DEVLINK_CMD_REGION_GET, 5106 .cmd = DEVLINK_CMD_REGION_GET,
5134 .doit = devlink_nl_cmd_region_get_doit, 5107 .doit = devlink_nl_cmd_region_get_doit,
5135 .dumpit = devlink_nl_cmd_region_get_dumpit, 5108 .dumpit = devlink_nl_cmd_region_get_dumpit,
5136 .policy = devlink_nl_policy,
5137 .flags = GENL_ADMIN_PERM, 5109 .flags = GENL_ADMIN_PERM,
5138 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5110 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5139 }, 5111 },
5140 { 5112 {
5141 .cmd = DEVLINK_CMD_REGION_DEL, 5113 .cmd = DEVLINK_CMD_REGION_DEL,
5142 .doit = devlink_nl_cmd_region_del, 5114 .doit = devlink_nl_cmd_region_del,
5143 .policy = devlink_nl_policy,
5144 .flags = GENL_ADMIN_PERM, 5115 .flags = GENL_ADMIN_PERM,
5145 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5116 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5146 }, 5117 },
5147 { 5118 {
5148 .cmd = DEVLINK_CMD_REGION_READ, 5119 .cmd = DEVLINK_CMD_REGION_READ,
5149 .dumpit = devlink_nl_cmd_region_read_dumpit, 5120 .dumpit = devlink_nl_cmd_region_read_dumpit,
5150 .policy = devlink_nl_policy,
5151 .flags = GENL_ADMIN_PERM, 5121 .flags = GENL_ADMIN_PERM,
5152 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5122 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5153 }, 5123 },
@@ -5155,7 +5125,6 @@ static const struct genl_ops devlink_nl_ops[] = {
5155 .cmd = DEVLINK_CMD_INFO_GET, 5125 .cmd = DEVLINK_CMD_INFO_GET,
5156 .doit = devlink_nl_cmd_info_get_doit, 5126 .doit = devlink_nl_cmd_info_get_doit,
5157 .dumpit = devlink_nl_cmd_info_get_dumpit, 5127 .dumpit = devlink_nl_cmd_info_get_dumpit,
5158 .policy = devlink_nl_policy,
5159 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5128 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5160 /* can be retrieved by unprivileged users */ 5129 /* can be retrieved by unprivileged users */
5161 }, 5130 },
@@ -5163,35 +5132,30 @@ static const struct genl_ops devlink_nl_ops[] = {
5163 .cmd = DEVLINK_CMD_HEALTH_REPORTER_GET, 5132 .cmd = DEVLINK_CMD_HEALTH_REPORTER_GET,
5164 .doit = devlink_nl_cmd_health_reporter_get_doit, 5133 .doit = devlink_nl_cmd_health_reporter_get_doit,
5165 .dumpit = devlink_nl_cmd_health_reporter_get_dumpit, 5134 .dumpit = devlink_nl_cmd_health_reporter_get_dumpit,
5166 .policy = devlink_nl_policy,
5167 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5135 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5168 /* can be retrieved by unprivileged users */ 5136 /* can be retrieved by unprivileged users */
5169 }, 5137 },
5170 { 5138 {
5171 .cmd = DEVLINK_CMD_HEALTH_REPORTER_SET, 5139 .cmd = DEVLINK_CMD_HEALTH_REPORTER_SET,
5172 .doit = devlink_nl_cmd_health_reporter_set_doit, 5140 .doit = devlink_nl_cmd_health_reporter_set_doit,
5173 .policy = devlink_nl_policy,
5174 .flags = GENL_ADMIN_PERM, 5141 .flags = GENL_ADMIN_PERM,
5175 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5142 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5176 }, 5143 },
5177 { 5144 {
5178 .cmd = DEVLINK_CMD_HEALTH_REPORTER_RECOVER, 5145 .cmd = DEVLINK_CMD_HEALTH_REPORTER_RECOVER,
5179 .doit = devlink_nl_cmd_health_reporter_recover_doit, 5146 .doit = devlink_nl_cmd_health_reporter_recover_doit,
5180 .policy = devlink_nl_policy,
5181 .flags = GENL_ADMIN_PERM, 5147 .flags = GENL_ADMIN_PERM,
5182 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5148 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5183 }, 5149 },
5184 { 5150 {
5185 .cmd = DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE, 5151 .cmd = DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE,
5186 .doit = devlink_nl_cmd_health_reporter_diagnose_doit, 5152 .doit = devlink_nl_cmd_health_reporter_diagnose_doit,
5187 .policy = devlink_nl_policy,
5188 .flags = GENL_ADMIN_PERM, 5153 .flags = GENL_ADMIN_PERM,
5189 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5154 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5190 }, 5155 },
5191 { 5156 {
5192 .cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET, 5157 .cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET,
5193 .doit = devlink_nl_cmd_health_reporter_dump_get_doit, 5158 .doit = devlink_nl_cmd_health_reporter_dump_get_doit,
5194 .policy = devlink_nl_policy,
5195 .flags = GENL_ADMIN_PERM, 5159 .flags = GENL_ADMIN_PERM,
5196 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 5160 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
5197 DEVLINK_NL_FLAG_NO_LOCK, 5161 DEVLINK_NL_FLAG_NO_LOCK,
@@ -5199,7 +5163,6 @@ static const struct genl_ops devlink_nl_ops[] = {
5199 { 5163 {
5200 .cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR, 5164 .cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR,
5201 .doit = devlink_nl_cmd_health_reporter_dump_clear_doit, 5165 .doit = devlink_nl_cmd_health_reporter_dump_clear_doit,
5202 .policy = devlink_nl_policy,
5203 .flags = GENL_ADMIN_PERM, 5166 .flags = GENL_ADMIN_PERM,
5204 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK | 5167 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
5205 DEVLINK_NL_FLAG_NO_LOCK, 5168 DEVLINK_NL_FLAG_NO_LOCK,
@@ -5207,7 +5170,6 @@ static const struct genl_ops devlink_nl_ops[] = {
5207 { 5170 {
5208 .cmd = DEVLINK_CMD_FLASH_UPDATE, 5171 .cmd = DEVLINK_CMD_FLASH_UPDATE,
5209 .doit = devlink_nl_cmd_flash_update, 5172 .doit = devlink_nl_cmd_flash_update,
5210 .policy = devlink_nl_policy,
5211 .flags = GENL_ADMIN_PERM, 5173 .flags = GENL_ADMIN_PERM,
5212 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK, 5174 .internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
5213 }, 5175 },
@@ -5217,6 +5179,7 @@ static struct genl_family devlink_nl_family __ro_after_init = {
5217 .name = DEVLINK_GENL_NAME, 5179 .name = DEVLINK_GENL_NAME,
5218 .version = DEVLINK_GENL_VERSION, 5180 .version = DEVLINK_GENL_VERSION,
5219 .maxattr = DEVLINK_ATTR_MAX, 5181 .maxattr = DEVLINK_ATTR_MAX,
5182 .policy = devlink_nl_policy,
5220 .netnsok = true, 5183 .netnsok = true,
5221 .pre_doit = devlink_nl_pre_doit, 5184 .pre_doit = devlink_nl_pre_doit,
5222 .post_doit = devlink_nl_post_doit, 5185 .post_doit = devlink_nl_post_doit,