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>
This commit is contained in:
committed by
David S. Miller
parent
56738f4608
commit
ef6243acb4
@ -4948,6 +4948,7 @@ static const struct nla_policy devlink_nl_policy[DEVLINK_ATTR_MAX + 1] = {
|
||||
static const struct genl_ops devlink_nl_ops[] = {
|
||||
{
|
||||
.cmd = DEVLINK_CMD_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_get_doit,
|
||||
.dumpit = devlink_nl_cmd_get_dumpit,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
@ -4955,6 +4956,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_port_get_doit,
|
||||
.dumpit = devlink_nl_cmd_port_get_dumpit,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
|
||||
@ -4962,12 +4964,14 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_SET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_port_set_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_SPLIT,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_port_split_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -4975,6 +4979,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_UNSPLIT,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_port_unsplit_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -4982,6 +4987,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_sb_get_doit,
|
||||
.dumpit = devlink_nl_cmd_sb_get_dumpit,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -4990,6 +4996,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_POOL_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_sb_pool_get_doit,
|
||||
.dumpit = devlink_nl_cmd_sb_pool_get_dumpit,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -4998,6 +5005,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_POOL_SET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_sb_pool_set_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -5005,6 +5013,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_PORT_POOL_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_sb_port_pool_get_doit,
|
||||
.dumpit = devlink_nl_cmd_sb_port_pool_get_dumpit,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
|
||||
@ -5013,6 +5022,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_PORT_POOL_SET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_sb_port_pool_set_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
|
||||
@ -5020,6 +5030,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_TC_POOL_BIND_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_sb_tc_pool_bind_get_doit,
|
||||
.dumpit = devlink_nl_cmd_sb_tc_pool_bind_get_dumpit,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
|
||||
@ -5028,6 +5039,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_TC_POOL_BIND_SET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_sb_tc_pool_bind_set_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT |
|
||||
@ -5035,6 +5047,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_OCC_SNAPSHOT,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_sb_occ_snapshot_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -5042,6 +5055,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_SB_OCC_MAX_CLEAR,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_sb_occ_max_clear_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -5049,12 +5063,14 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_ESWITCH_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_eswitch_get_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_ESWITCH_SET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_eswitch_set_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -5062,42 +5078,49 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_DPIPE_TABLE_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_dpipe_table_get,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_DPIPE_ENTRIES_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_dpipe_entries_get,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_DPIPE_HEADERS_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_dpipe_headers_get,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_dpipe_table_counters_set,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_RESOURCE_SET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_resource_set,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_RESOURCE_DUMP,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_resource_dump,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
/* can be retrieved by unprivileged users */
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_RELOAD,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_reload,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -5105,6 +5128,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PARAM_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_param_get_doit,
|
||||
.dumpit = devlink_nl_cmd_param_get_dumpit,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
@ -5112,12 +5136,14 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PARAM_SET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_param_set_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_PARAM_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_port_param_get_doit,
|
||||
.dumpit = devlink_nl_cmd_port_param_get_dumpit,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
|
||||
@ -5125,12 +5151,14 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_PORT_PARAM_SET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_port_param_set_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_PORT,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_REGION_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_region_get_doit,
|
||||
.dumpit = devlink_nl_cmd_region_get_dumpit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
@ -5138,18 +5166,21 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_REGION_DEL,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_region_del,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_REGION_READ,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.dumpit = devlink_nl_cmd_region_read_dumpit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_INFO_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_info_get_doit,
|
||||
.dumpit = devlink_nl_cmd_info_get_dumpit,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
@ -5157,6 +5188,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_health_reporter_get_doit,
|
||||
.dumpit = devlink_nl_cmd_health_reporter_get_dumpit,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
@ -5164,24 +5196,28 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_SET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_health_reporter_set_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_RECOVER,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_health_reporter_recover_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_health_reporter_diagnose_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_health_reporter_dump_get_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -5189,6 +5225,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_health_reporter_dump_clear_doit,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK |
|
||||
@ -5196,6 +5233,7 @@ static const struct genl_ops devlink_nl_ops[] = {
|
||||
},
|
||||
{
|
||||
.cmd = DEVLINK_CMD_FLASH_UPDATE,
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = devlink_nl_cmd_flash_update,
|
||||
.flags = GENL_ADMIN_PERM,
|
||||
.internal_flags = DEVLINK_NL_FLAG_NEED_DEVLINK,
|
||||
|
Reference in New Issue
Block a user