xfrm: enforce validity of offload input flags
authorLeon Romanovsky <leonro@nvidia.com>
Tue, 8 Feb 2022 14:14:32 +0000 (16:14 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Mar 2022 18:01:56 +0000 (19:01 +0100)
commitab4fa0d4f8e721d8ca94c47512d2d6df69f44fb2
treea1007ab579d819e71090aedcbf01dc82a0c5fb03
parent05f7927b25d2635e87267ff6c79db79fb46cf313
xfrm: enforce validity of offload input flags

commit 7c76ecd9c99b6e9a771d813ab1aa7fa428b3ade1 upstream.

struct xfrm_user_offload has flags variable that received user input,
but kernel didn't check if valid bits were provided. It caused a situation
where not sanitized input was forwarded directly to the drivers.

For example, XFRM_OFFLOAD_IPV6 define that was exposed, was used by
strongswan, but not implemented in the kernel at all.

As a solution, check and sanitize input flags to forward
XFRM_OFFLOAD_INBOUND to the drivers.

Fixes: d77e38e612a0 ("xfrm: Add an IPsec hardware offloading API")
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/uapi/linux/xfrm.h
net/xfrm/xfrm_device.c