net/mlx5e: Use flow keys dissector to parse packets for ARFS
authorMaxim Mikityanskiy <maximmi@mellanox.com>
Fri, 5 Jul 2019 14:59:28 +0000 (17:59 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 25 Aug 2019 08:48:05 +0000 (10:48 +0200)
commit447f5f48f4fad049e8f7d7c86ec45825af130ca8
treedb12468ce583a6093989447102c0d661bef3ae45
parentfbd8ab68067534a11976ba2031f531644669ee51
net/mlx5e: Use flow keys dissector to parse packets for ARFS

[ Upstream commit 405b93eb764367a670e729da18e54dc42db32620 ]

The current ARFS code relies on certain fields to be set in the SKB
(e.g. transport_header) and extracts IP addresses and ports by custom
code that parses the packet. The necessary SKB fields, however, are not
always set at that point, which leads to an out-of-bounds access. Use
skb_flow_dissect_flow_keys() to get the necessary information reliably,
fix the out-of-bounds access and reuse the code.

Fixes: 18c908e477dc ("net/mlx5e: Add accelerated RFS support")
Signed-off-by: Maxim Mikityanskiy <maximmi@mellanox.com>
Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c