mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 05:55:44 +02:00
net: mscc: ocelot: properly reject destination IP keys in VCAP IS1
commitf1becbed41upstream. An attempt is made to warn the user about the fact that VCAP IS1 cannot offload keys matching on destination IP (at least given the current half key format), but sadly that warning fails miserably in practice, due to the fact that it operates on an uninitialized "match" variable. We must first decode the keys from the flow rule. Fixes:75944fda1d("net: mscc: ocelot: offload ingress skbedit and vlan actions to VCAP IS1") Reported-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2809a5ca96
commit
719611e806
|
|
@ -540,13 +540,14 @@ ocelot_flower_parse_key(struct ocelot *ocelot, int port, bool ingress,
|
|||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
flow_rule_match_ipv4_addrs(rule, &match);
|
||||
|
||||
if (filter->block_id == VCAP_IS1 && *(u32 *)&match.mask->dst) {
|
||||
NL_SET_ERR_MSG_MOD(extack,
|
||||
"Key type S1_NORMAL cannot match on destination IP");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
flow_rule_match_ipv4_addrs(rule, &match);
|
||||
tmp = &filter->key.ipv4.sip.value.addr[0];
|
||||
memcpy(tmp, &match.key->src, 4);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user