mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-03 17:51:57 +09:00
mlxsw: spectrum_router: Compare key with correct object type
When comparing a key with a nexthop group in rhastable's obj_cmpfn() callback, make sure that the key and nexthop group are of the same type (i.e., IPv4 / IPv6). The bug is not currently visible because IPv6 nexthop groups do not populate the FIB info pointer and IPv4 nexthop groups do not set the ifindex for the individual nexthops. Signed-off-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Jiri Pirko <jiri@nvidia.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
49b1cabffb
commit
10502d055b
@@ -3040,6 +3040,12 @@ mlxsw_sp_nexthop6_group_cmp(const struct mlxsw_sp_nexthop_group *nh_grp,
|
||||
return true;
|
||||
}
|
||||
|
||||
static int
|
||||
mlxsw_sp_nexthop_group_type(const struct mlxsw_sp_nexthop_group *nh_grp)
|
||||
{
|
||||
return nh_grp->neigh_tbl->family;
|
||||
}
|
||||
|
||||
static int
|
||||
mlxsw_sp_nexthop_group_cmp(struct rhashtable_compare_arg *arg, const void *ptr)
|
||||
{
|
||||
@@ -3048,8 +3054,12 @@ mlxsw_sp_nexthop_group_cmp(struct rhashtable_compare_arg *arg, const void *ptr)
|
||||
|
||||
switch (cmp_arg->proto) {
|
||||
case MLXSW_SP_L3_PROTO_IPV4:
|
||||
if (mlxsw_sp_nexthop_group_type(nh_grp) != AF_INET)
|
||||
return 1;
|
||||
return cmp_arg->fi != mlxsw_sp_nexthop4_group_fi(nh_grp);
|
||||
case MLXSW_SP_L3_PROTO_IPV6:
|
||||
if (mlxsw_sp_nexthop_group_type(nh_grp) != AF_INET6)
|
||||
return 1;
|
||||
return !mlxsw_sp_nexthop6_group_cmp(nh_grp,
|
||||
cmp_arg->fib6_entry);
|
||||
default:
|
||||
@@ -3058,12 +3068,6 @@ mlxsw_sp_nexthop_group_cmp(struct rhashtable_compare_arg *arg, const void *ptr)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
mlxsw_sp_nexthop_group_type(const struct mlxsw_sp_nexthop_group *nh_grp)
|
||||
{
|
||||
return nh_grp->neigh_tbl->family;
|
||||
}
|
||||
|
||||
static u32 mlxsw_sp_nexthop_group_hash_obj(const void *data, u32 len, u32 seed)
|
||||
{
|
||||
const struct mlxsw_sp_nexthop_group *nh_grp = data;
|
||||
|
||||
Reference in New Issue
Block a user