lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 554/563] net: mscc: ocelot: fix using match before it is set
    Date
    From: Tom Rix <trix@redhat.com>

    commit baa59504c1cd0cca7d41954a45ee0b3dc78e41a0 upstream.

    Clang static analysis reports this issue
    ocelot_flower.c:563:8: warning: 1st function call argument
    is an uninitialized value
    !is_zero_ether_addr(match.mask->dst)) {
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    The variable match is used before it is set. So move the
    block.

    Fixes: 75944fda1dfe ("net: mscc: ocelot: offload ingress skbedit and vlan actions to VCAP IS1")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/mscc/ocelot_flower.c | 15 ++++++++-------
    1 file changed, 8 insertions(+), 7 deletions(-)

    --- a/drivers/net/ethernet/mscc/ocelot_flower.c
    +++ b/drivers/net/ethernet/mscc/ocelot_flower.c
    @@ -462,13 +462,6 @@ ocelot_flower_parse_key(struct ocelot *o
    return -EOPNOTSUPP;
    }

    - if (filter->block_id == VCAP_IS1 &&
    - !is_zero_ether_addr(match.mask->dst)) {
    - NL_SET_ERR_MSG_MOD(extack,
    - "Key type S1_NORMAL cannot match on destination MAC");
    - return -EOPNOTSUPP;
    - }
    -
    /* The hw support mac matches only for MAC_ETYPE key,
    * therefore if other matches(port, tcp flags, etc) are added
    * then just bail out
    @@ -483,6 +476,14 @@ ocelot_flower_parse_key(struct ocelot *o
    return -EOPNOTSUPP;

    flow_rule_match_eth_addrs(rule, &match);
    +
    + if (filter->block_id == VCAP_IS1 &&
    + !is_zero_ether_addr(match.mask->dst)) {
    + NL_SET_ERR_MSG_MOD(extack,
    + "Key type S1_NORMAL cannot match on destination MAC");
    + return -EOPNOTSUPP;
    + }
    +
    filter->key_type = OCELOT_VCAP_KEY_ETYPE;
    ether_addr_copy(filter->key.etype.dmac.value,
    match.key->dst);

    \
     
     \ /
      Last update: 2022-01-24 23:40    [W:3.103 / U:0.412 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site