summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiang Jie <liangjie@lixiang.com>2024-12-30 17:37:09 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-01-09 13:32:02 +0100
commit9eea3703c882876e5713071d51a510fecd3471d5 (patch)
tree3ab9a9275425d6302d6565667f18b19ee97b5757
parentb238f61cc394d5fef27b26d7d9aa383ebfddabb0 (diff)
downloadlinux-9eea3703c882876e5713071d51a510fecd3471d5.tar.gz
linux-9eea3703c882876e5713071d51a510fecd3471d5.tar.bz2
linux-9eea3703c882876e5713071d51a510fecd3471d5.zip
net: sfc: Correct key_len for efx_tc_ct_zone_ht_params
[ Upstream commit a8620de72e5676993ec3a3b975f7c10908f5f60f ] In efx_tc_ct_zone_ht_params, the key_len was previously set to offsetof(struct efx_tc_ct_zone, linkage). This calculation is incorrect because it includes any padding between the zone field and the linkage field due to structure alignment, which can vary between systems. This patch updates key_len to use sizeof_field(struct efx_tc_ct_zone, zone) , ensuring that the hash table correctly uses the zone as the key. This fix prevents potential hash lookup errors and improves connection tracking reliability. Fixes: c3bb5c6acd4e ("sfc: functions to register for conntrack zone offload") Signed-off-by: Liang Jie <liangjie@lixiang.com> Acked-by: Edward Cree <ecree.xilinx@gmail.com> Link: https://patch.msgid.link/20241230093709.3226854-1-buaajxlj@163.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/net/ethernet/sfc/tc_conntrack.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ethernet/sfc/tc_conntrack.c b/drivers/net/ethernet/sfc/tc_conntrack.c
index 44bb57670340..109d2aa34ae3 100644
--- a/drivers/net/ethernet/sfc/tc_conntrack.c
+++ b/drivers/net/ethernet/sfc/tc_conntrack.c
@@ -16,7 +16,7 @@ static int efx_tc_flow_block(enum tc_setup_type type, void *type_data,
void *cb_priv);
static const struct rhashtable_params efx_tc_ct_zone_ht_params = {
- .key_len = offsetof(struct efx_tc_ct_zone, linkage),
+ .key_len = sizeof_field(struct efx_tc_ct_zone, zone),
.key_offset = 0,
.head_offset = offsetof(struct efx_tc_ct_zone, linkage),
};