]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mlxsw: spectrum_flower: Forbid to offload match on reserved TCP flags bits
authorJiri Pirko <jiri@mellanox.com>
Sat, 27 Jul 2019 17:32:57 +0000 (20:32 +0300)
committerDavid S. Miller <davem@davemloft.net>
Sat, 27 Jul 2019 21:32:31 +0000 (14:32 -0700)
Matching on reserved TCP flags bits is only supported using custom
parser. Since the usecase for that is not known now, just forbid to
offload rules that match on these bits.

Reported-by: Alex Kushnarov <alexanderk@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c

index c86d582dafbebf90758e7a198d475e7e8b20a5ba..0ad1a24abfc63d3c4d84f166a44a73af2e873c31 100644 (file)
@@ -267,6 +267,12 @@ static int mlxsw_sp_flower_parse_tcp(struct mlxsw_sp *mlxsw_sp,
 
        flow_rule_match_tcp(rule, &match);
 
+       if (match.mask->flags & htons(0x0E00)) {
+               NL_SET_ERR_MSG_MOD(f->common.extack, "TCP flags match not supported on reserved bits");
+               dev_err(mlxsw_sp->bus_info->dev, "TCP flags match not supported on reserved bits\n");
+               return -EINVAL;
+       }
+
        mlxsw_sp_acl_rulei_keymask_u32(rulei, MLXSW_AFK_ELEMENT_TCP_FLAGS,
                                       ntohs(match.key->flags),
                                       ntohs(match.mask->flags));