• J
    bonding: cleanup bond_opts array · 7bfa0145
    Jonathan Toppins 提交于
    Remove the empty array element initializer and size the array with
    BOND_OPT_LAST so the compiler will complain if more elements are in
    there than should be.
    
    An interesting unwanted side effect of this initializer is that if one
    inserts new options into the middle of the array then this initializer
    will zero out the option that equals BOND_OPT_TLB_DYNAMIC_LB+1.
    
    Example:
    Extend the OPTS enum:
    enum {
       ...
       BOND_OPT_TLB_DYNAMIC_LB,
       BOND_OPT_LACP_NEW1,
       BOND_OPT_LAST
    };
    
    Now insert into bond_opts array:
    static const struct bond_option bond_opts[] = {
          ...
          [BOND_OPT_LACP_RATE] = { .... unchanged stuff .... },
          [BOND_OPT_LACP_NEW1] = { ... new stuff ... },
          ...
          [BOND_OPT_TLB_DYNAMIC_LB] = { .... unchanged stuff ....},
          { } // MARK A
    };
    
    Since BOND_OPT_LACP_NEW1 = BOND_OPT_TLB_DYNAMIC_LB+1, the last
    initializer (MARK A) will overwrite the contents of BOND_OPT_LACP_NEW1
    and can be easily viewed with the crash utility.
    Signed-off-by: NJonathan Toppins <jtoppins@cumulusnetworks.com>
    Cc: Andy Gospodarek <gospo@cumulusnetworks.com>
    Cc: Nikolay Aleksandrov <nikolay@redhat.com>
    Signed-off-by: NAndy Gospodarek <gospo@cumulusnetworks.com>
    Acked-by: NNikolay Aleksandrov <nikolay@redhat.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    7bfa0145
bond_options.c 38.4 KB