[ovs-dev] [PATCH V3 3/9] compat: Move genl_ops policy to genl_family
Yi-Hung Wei
yihung.wei at gmail.com
Fri Mar 6 18:28:35 UTC 2020
On Wed, Mar 4, 2020 at 3:04 PM Greg Rose <gvrose8192 at gmail.com> wrote:
>
> From: Johannes Berg <johannes.berg at intel.com>
>
> Upstream commit:
> commit 3b0f31f2b8c9fb348e4530b88f6b64f9621f83d6
> Author: Johannes Berg <johannes.berg at intel.com>
> Date: Thu Mar 21 22:51:02 2019 +0100
>
> genetlink: make policy common to family
>
> Since maxattr is common, the policy can't really differ sanely,
> so make it common as well.
>
> The only user that did in fact manage to make a non-common policy
> is taskstats, which has to be really careful about it (since it's
> still using a common maxattr!). This is no longer supported, but
> we can fake it using pre_doit.
>
> This reduces the size of e.g. nl80211.o (which has lots of commands):
>
> text data bss dec hex filename
> 398745 14323 2240 415308 6564c net/wireless/nl80211.o (before)
> 397913 14331 2240 414484 65314 net/wireless/nl80211.o (after)
> --------------------------------
> -832 +8 0 -824
>
> Which is obviously just 8 bytes for each command, and an added 8
> bytes for the new policy pointer. I'm not sure why the ops list is
> counted as .text though.
>
> Most of the code transformations were done using the following spatch:
> @ops@
> identifier OPS;
> expression POLICY;
> @@
> struct genl_ops OPS[] = {
> ...,
> {
> - .policy = POLICY,
> },
> ...
> };
>
> @@
> identifier ops.OPS;
> expression ops.POLICY;
> identifier fam;
> expression M;
> @@
> struct genl_family fam = {
> .ops = OPS,
> .maxattr = M,
> + .policy = POLICY,
> ...
> };
>
> This also gets rid of devlink_nl_cmd_region_read_dumpit() accessing
> the cb->data as ops, which we want to change in a later genl patch.
>
> Signed-off-by: Johannes Berg <johannes.berg at intel.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
>
> Since commit 3b0f31f2b8c9f ("genetlink: make policy common to family")
> the policy field of the genl_ops structure has been moved into the
> genl_family structure. Add necessary compat layer infrastructure
> to still support older kernels.
>
> Signed-off-by: Greg Rose <gvrose8192 at gmail.com>
> ---
> V3 - Add policy back to genl_family instead of completely removing
> it.
> ---
Thanks for the patch. LGTM.
Acked-by: Yi-Hung Wei <yihung.wei at gmail.com>
More information about the dev
mailing list