linux/net/xfrm
Eyal Birger 9f8550e4bd xfrm: fix disable_xfrm sysctl when used on xfrm interfaces
The disable_xfrm flag signals that xfrm should not be performed during
routing towards a device before reaching device xmit.

For xfrm interfaces this is usually desired as they perform the outbound
policy lookup as part of their xmit using their if_id.

Before this change enabling this flag on xfrm interfaces prevented them
from xmitting as xfrm_lookup_with_ifid() would not perform a policy lookup
in case the original dst had the DST_NOXFRM flag.

This optimization is incorrect when the lookup is done by the xfrm
interface xmit logic.

Fix by performing policy lookup when invoked by xfrmi as if_id != 0.

Similarly it's unlikely for the 'no policy exists on net' check to yield
any performance benefits when invoked from xfrmi.

Fixes: f203b76d78 ("xfrm: Add virtual xfrm interfaces")
Signed-off-by: Eyal Birger <eyal.birger@gmail.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
2021-01-04 10:04:05 +01:00
..
espintcp.c espintcp: restore IP CB before handing the packet to xfrm 2020-08-17 15:58:04 +02:00
Kconfig xfrm/compat: Add 32=>64-bit messages translator 2020-09-24 08:53:03 +02:00
Makefile xfrm: Provide API to register translator module 2020-09-24 08:53:03 +02:00
xfrm_algo.c
xfrm_compat.c xfrm/compat: Don't allocate memory with __GFP_ZERO 2020-11-09 07:34:56 +01:00
xfrm_device.c
xfrm_hash.c
xfrm_hash.h
xfrm_inout.h
xfrm_input.c xfrm: Fix oops in xfrm_replay_advance_bmp 2020-12-19 08:12:17 +01:00
xfrm_interface.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec 2020-11-04 08:12:52 -08:00
xfrm_ipcomp.c
xfrm_output.c
xfrm_policy.c xfrm: fix disable_xfrm sysctl when used on xfrm interfaces 2021-01-04 10:04:05 +01:00
xfrm_proc.c
xfrm_replay.c
xfrm_state.c net: xfrm: fix memory leak in xfrm_user_policy() 2020-11-10 09:14:25 +01:00
xfrm_sysctl.c
xfrm_user.c xfrm/compat: Add 32=>64-bit messages translator 2020-09-24 08:53:03 +02:00