genetlink: convert control family to split ops

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2175250

commit aba22ca8ccd6954ffbb1a7a671f34300887b4727
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Fri Nov 4 12:13:43 2022 -0700

    genetlink: convert control family to split ops

    Prove that the split ops work.
    Sadly we need to keep bug-wards compatibility and specify
    the same policy for dump as do, even tho we don't parse
    inputs for the dump.

    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
This commit is contained in:
Ivan Vecera 2023-03-06 16:30:46 +01:00
parent b3c893d66a
commit d722fdf67c
1 changed files with 13 additions and 4 deletions

View File

@ -1617,14 +1617,22 @@ static int ctrl_dumppolicy_done(struct netlink_callback *cb)
return 0;
}
static const struct genl_ops genl_ctrl_ops[] = {
static const struct genl_split_ops genl_ctrl_ops[] = {
{
.cmd = CTRL_CMD_GETFAMILY,
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
.validate = GENL_DONT_VALIDATE_STRICT,
.policy = ctrl_policy_family,
.maxattr = ARRAY_SIZE(ctrl_policy_family) - 1,
.doit = ctrl_getfamily,
.flags = GENL_CMD_CAP_DO,
},
{
.cmd = CTRL_CMD_GETFAMILY,
.validate = GENL_DONT_VALIDATE_DUMP,
.policy = ctrl_policy_family,
.maxattr = ARRAY_SIZE(ctrl_policy_family) - 1,
.dumpit = ctrl_dumpfamily,
.flags = GENL_CMD_CAP_DUMP,
},
{
.cmd = CTRL_CMD_GETPOLICY,
@ -1633,6 +1641,7 @@ static const struct genl_ops genl_ctrl_ops[] = {
.start = ctrl_dumppolicy_start,
.dumpit = ctrl_dumppolicy,
.done = ctrl_dumppolicy_done,
.flags = GENL_CMD_CAP_DUMP,
},
};
@ -1642,8 +1651,8 @@ static const struct genl_multicast_group genl_ctrl_groups[] = {
static struct genl_family genl_ctrl __ro_after_init = {
.module = THIS_MODULE,
.ops = genl_ctrl_ops,
.n_ops = ARRAY_SIZE(genl_ctrl_ops),
.split_ops = genl_ctrl_ops,
.n_split_ops = ARRAY_SIZE(genl_ctrl_ops),
.resv_start_op = CTRL_CMD_GETPOLICY + 1,
.mcgrps = genl_ctrl_groups,
.n_mcgrps = ARRAY_SIZE(genl_ctrl_groups),