lkml.org 
[lkml]   [2020]   [Oct]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH net-next 04/11] wimax: fix duplicate initializer warning
    Date
    From: Arnd Bergmann <arnd@arndb.de>

    gcc -Wextra points out multiple fields that use the same index '1'
    in the wimax_gnl_policy definition:

    net/wimax/stack.c:393:29: warning: initialized field overwritten [-Woverride-init]
    net/wimax/stack.c:397:28: warning: initialized field overwritten [-Woverride-init]
    net/wimax/stack.c:398:26: warning: initialized field overwritten [-Woverride-init]

    This seems to work since all four use the same NLA_U32 value, but it
    still appears to be wrong. In addition, there is no intializer for
    WIMAX_GNL_MSG_PIPE_NAME, which uses the same index '2' as
    WIMAX_GNL_RFKILL_STATE.

    Johannes already changed this twice to improve it, but I don't think
    there is a good solution, so try to work around it by using a
    numeric index and adding comments.

    Cc: Johannes Berg <johannes.berg@intel.com>
    Fixes: 3b0f31f2b8c9 ("genetlink: make policy common to family")
    Fixes: b61a5eea5904 ("wimax: use genl_register_family_with_ops()")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    ---
    net/wimax/stack.c | 27 +++++++++++++++++----------
    1 file changed, 17 insertions(+), 10 deletions(-)

    diff --git a/net/wimax/stack.c b/net/wimax/stack.c
    index b6dd9d956ed8..3a62af3f80bf 100644
    --- a/net/wimax/stack.c
    +++ b/net/wimax/stack.c
    @@ -388,17 +388,24 @@ void wimax_dev_init(struct wimax_dev *wimax_dev)
    }
    EXPORT_SYMBOL_GPL(wimax_dev_init);

    +/*
    + * There are multiple enums reusing the same values, adding
    + * others is only possible if they use a compatible policy.
    + */
    static const struct nla_policy wimax_gnl_policy[WIMAX_GNL_ATTR_MAX + 1] = {
    - [WIMAX_GNL_RESET_IFIDX] = { .type = NLA_U32, },
    - [WIMAX_GNL_RFKILL_IFIDX] = { .type = NLA_U32, },
    - [WIMAX_GNL_RFKILL_STATE] = {
    - .type = NLA_U32 /* enum wimax_rf_state */
    - },
    - [WIMAX_GNL_STGET_IFIDX] = { .type = NLA_U32, },
    - [WIMAX_GNL_MSG_IFIDX] = { .type = NLA_U32, },
    - [WIMAX_GNL_MSG_DATA] = {
    - .type = NLA_UNSPEC, /* libnl doesn't grok BINARY yet */
    - },
    + /*
    + * WIMAX_GNL_RESET_IFIDX, WIMAX_GNL_RFKILL_IFIDX,
    + * WIMAX_GNL_STGET_IFIDX, WIMAX_GNL_MSG_IFIDX
    + */
    + [1] = { .type = NLA_U32, },
    + /*
    + * WIMAX_GNL_RFKILL_STATE, WIMAX_GNL_MSG_PIPE_NAME
    + */
    + [2] = { .type = NLA_U32, }, /* enum wimax_rf_state */
    + /*
    + * WIMAX_GNL_MSG_DATA
    + */
    + [3] = { .type = NLA_UNSPEC, }, /* libnl doesn't grok BINARY yet */
    };

    static const struct genl_small_ops wimax_gnl_ops[] = {
    --
    2.27.0
    \
     
     \ /
      Last update: 2020-10-26 22:33    [W:5.186 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site