diff mbox series

[net] xfrm: Pass flowi_oif or l3mdev as oif to xfrm_dst_lookup

Message ID 20220401015334.40252-1-dsahern@kernel.org (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series [net] xfrm: Pass flowi_oif or l3mdev as oif to xfrm_dst_lookup | expand

Checks

Context Check Description
netdev/tree_selection success Clearly marked for net
netdev/fixes_present success Fixes tag present in non-next series
netdev/subject_prefix success Link
netdev/cover_letter success Single patches do not need cover letters
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 12 this patch: 12
netdev/cc_maintainers warning 2 maintainers not CCed: herbert@gondor.apana.org.au steffen.klassert@secunet.com
netdev/build_clang success Errors and warnings before: 9 this patch: 9
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn success Errors and warnings before: 12 this patch: 12
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 15 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

David Ahern April 1, 2022, 1:53 a.m. UTC
The commit referenced in the Fixes tag no longer changes the
flow oif to the l3mdev ifindex. A xfrm use case was expecting
the flowi_oif to be the VRF if relevant and the change broke
that test. Update xfrm_bundle_create to pass oif if set and any
potential flowi_l3mdev if oif is not set.

Fixes: 40867d74c374 ("net: Add l3mdev index to flow struct and avoid oif reset for port devices")
Reported-by: kernel test robot <oliver.sang@intel.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
---
 net/xfrm/xfrm_policy.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Jakub Kicinski April 1, 2022, 6:50 p.m. UTC | #1
On Thu, 31 Mar 2022 19:53:34 -0600 David Ahern wrote:
> To: netdev@vger.kernel.org,  kuba@kernel.org,  davem@davemloft.net,  pabeni@redhat.com
> Cc: oliver.sang@intel.com,  David Ahern <dsahern@kernel.org>
> Subject: [PATCH net] xfrm: Pass flowi_oif or l3mdev as oif to xfrm_dst_lookup

This needs Steffen and Herbert on CC. I'd just CC them in but
patch was marked as Awaiting upstream in our PW already, so
repost would be better. Regardless which tree it ends up getting
applied to.

> The commit referenced in the Fixes tag no longer changes the
> flow oif to the l3mdev ifindex. A xfrm use case was expecting
> the flowi_oif to be the VRF if relevant and the change broke
> that test. Update xfrm_bundle_create to pass oif if set and any
> potential flowi_l3mdev if oif is not set.
> 
> Fixes: 40867d74c374 ("net: Add l3mdev index to flow struct and avoid oif reset for port devices")
> Reported-by: kernel test robot <oliver.sang@intel.com>
> Signed-off-by: David Ahern <dsahern@kernel.org>
David Ahern April 1, 2022, 6:54 p.m. UTC | #2
On 4/1/22 12:50 PM, Jakub Kicinski wrote:
> On Thu, 31 Mar 2022 19:53:34 -0600 David Ahern wrote:
>> To: netdev@vger.kernel.org,  kuba@kernel.org,  davem@davemloft.net,  pabeni@redhat.com
>> Cc: oliver.sang@intel.com,  David Ahern <dsahern@kernel.org>
>> Subject: [PATCH net] xfrm: Pass flowi_oif or l3mdev as oif to xfrm_dst_lookup
> 
> This needs Steffen and Herbert on CC. I'd just CC them in but
> patch was marked as Awaiting upstream in our PW already, so
> repost would be better. Regardless which tree it ends up getting
> applied to.

Prior l3mdev stuff went in through net/net-next, hence the cc list for
this one. I will re-send adding them.

> 
>> The commit referenced in the Fixes tag no longer changes the
>> flow oif to the l3mdev ifindex. A xfrm use case was expecting
>> the flowi_oif to be the VRF if relevant and the change broke
>> that test. Update xfrm_bundle_create to pass oif if set and any
>> potential flowi_l3mdev if oif is not set.
>>
>> Fixes: 40867d74c374 ("net: Add l3mdev index to flow struct and avoid oif reset for port devices")
>> Reported-by: kernel test robot <oliver.sang@intel.com>
>> Signed-off-by: David Ahern <dsahern@kernel.org>
diff mbox series

Patch

diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index 19aa994f5d2c..00bd0ecff5a1 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -2593,12 +2593,14 @@  static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy,
 
 		if (xfrm[i]->props.mode != XFRM_MODE_TRANSPORT) {
 			__u32 mark = 0;
+			int oif;
 
 			if (xfrm[i]->props.smark.v || xfrm[i]->props.smark.m)
 				mark = xfrm_smark_get(fl->flowi_mark, xfrm[i]);
 
 			family = xfrm[i]->props.family;
-			dst = xfrm_dst_lookup(xfrm[i], tos, fl->flowi_oif,
+			oif = fl->flowi_oif ? : fl->flowi_l3mdev;
+			dst = xfrm_dst_lookup(xfrm[i], tos, oif,
 					      &saddr, &daddr, family, mark);
 			err = PTR_ERR(dst);
 			if (IS_ERR(dst))