]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
net: sfc: Correct key_len for efx_tc_ct_zone_ht_params
authorLiang Jie <liangjie@lixiang.com>
Mon, 30 Dec 2024 09:37:09 +0000 (17:37 +0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 3 Jan 2025 01:11:41 +0000 (17:11 -0800)
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>
drivers/net/ethernet/sfc/tc_conntrack.c

index d90206f27161e4e3cf7d3bae93cb648b14f9584a..c0603f54cec3ad83eb8cb1b7b6bcf8046efa6e40 100644 (file)
@@ -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),
 };