diff options
author | Guillaume Nault <gnault@redhat.com> | 2024-10-31 16:52:49 +0100 |
---|---|---|
committer | Steffen Klassert <steffen.klassert@secunet.com> | 2024-11-06 12:42:42 +0100 |
commit | 3021a2a3403df0fe0b79af15071e5f6ee25461a4 (patch) | |
tree | dc60f0d6f212c7db6f44cfa657d9bae66742e787 | |
parent | 01f61cbfc8b2cf89fe960ea3c1c67bba089dbdc5 (diff) | |
download | linux-stable-3021a2a3403df0fe0b79af15071e5f6ee25461a4.tar.gz linux-stable-3021a2a3403df0fe0b79af15071e5f6ee25461a4.tar.bz2 linux-stable-3021a2a3403df0fe0b79af15071e5f6ee25461a4.zip |
xfrm: Convert xfrm_dst_lookup() to dscp_t.
Pass a dscp_t variable to xfrm_dst_lookup(), instead of an int, to
prevent accidental setting of ECN bits in ->flowi4_tos.
Only xfrm_bundle_create() actually calls xfrm_dst_lookup(). Since it
already has a dscp_t variable to pass as parameter, we only need to
remove the inet_dscp_to_dsfield() conversion.
Signed-off-by: Guillaume Nault <gnault@redhat.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
-rw-r--r-- | net/xfrm/xfrm_policy.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index ecb989347bd4..7e3e10fb9ca0 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@ -289,7 +289,7 @@ struct dst_entry *__xfrm_dst_lookup(int family, EXPORT_SYMBOL(__xfrm_dst_lookup); static inline struct dst_entry *xfrm_dst_lookup(struct xfrm_state *x, - int tos, int oif, + dscp_t dscp, int oif, xfrm_address_t *prev_saddr, xfrm_address_t *prev_daddr, int family, u32 mark) @@ -312,7 +312,7 @@ static inline struct dst_entry *xfrm_dst_lookup(struct xfrm_state *x, params.net = net; params.saddr = saddr; params.daddr = daddr; - params.tos = tos; + params.tos = inet_dscp_to_dsfield(dscp); params.oif = oif; params.mark = mark; params.ipproto = x->id.proto; @@ -2732,9 +2732,8 @@ static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy, family = xfrm[i]->props.family; oif = fl->flowi_oif ? : fl->flowi_l3mdev; - dst = xfrm_dst_lookup(xfrm[i], - inet_dscp_to_dsfield(dscp), oif, - &saddr, &daddr, family, mark); + dst = xfrm_dst_lookup(xfrm[i], dscp, oif, &saddr, + &daddr, family, mark); err = PTR_ERR(dst); if (IS_ERR(dst)) goto put_states; |