Message ID | 20220118134110.591613-1-trix@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Commit | baa59504c1cd0cca7d41954a45ee0b3dc78e41a0 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: mscc: ocelot: fix using match before it is set | expand |
Hello: This patch was applied to netdev/net.git (master) by David S. Miller <davem@davemloft.net>: On Tue, 18 Jan 2022 05:41:10 -0800 you wrote: > From: Tom Rix <trix@redhat.com> > > 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)) { > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > [...] Here is the summary with links: - net: mscc: ocelot: fix using match before it is set https://git.kernel.org/netdev/net/c/baa59504c1cd You are awesome, thank you!
On Tue, Jan 18, 2022 at 05:41:10AM -0800, trix@redhat.com wrote: > From: Tom Rix <trix@redhat.com> > > 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> > --- Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> (sorry for the delay)
diff --git a/drivers/net/ethernet/mscc/ocelot_flower.c b/drivers/net/ethernet/mscc/ocelot_flower.c index 4a0fda22d3436..949858891973d 100644 --- a/drivers/net/ethernet/mscc/ocelot_flower.c +++ b/drivers/net/ethernet/mscc/ocelot_flower.c @@ -559,13 +559,6 @@ ocelot_flower_parse_key(struct ocelot *ocelot, int port, bool ingress, 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 @@ -580,6 +573,14 @@ ocelot_flower_parse_key(struct ocelot *ocelot, int port, bool ingress, 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);