[PATCH net] net: sfc: Correct key_len for efx_tc_ct_zone_ht_params

Liang Jie posted 1 patch 1 year, 4 months ago
drivers/net/ethernet/sfc/tc_conntrack.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH net] net: sfc: Correct key_len for efx_tc_ct_zone_ht_params
Posted by Liang Jie 1 year, 4 months ago
From: Liang Jie <liangjie@lixiang.com>

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>
---
 drivers/net/ethernet/sfc/tc_conntrack.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/sfc/tc_conntrack.c b/drivers/net/ethernet/sfc/tc_conntrack.c
index d90206f27161..c0603f54cec3 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),
 };
-- 
2.25.1
Re: [PATCH net] net: sfc: Correct key_len for efx_tc_ct_zone_ht_params
Posted by Edward Cree 1 year, 4 months ago
On 30/12/2024 09:37, Liang Jie wrote:
> From: Liang Jie <liangjie@lixiang.com>
> 
> 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>

Thanks.

Acked-by: Edward Cree <ecree.xilinx@gmail.com>