TCP_SAVED_SYN is not supported by do_tcp_setsockopt(), but it is not rejected by sol_tcp_sockopt() during calling bpf_setsockopt(), which results in returning -ENOPROTOOPT instead of common -EINVAL. This patch fixes the issue. Signed-off-by: Rongfeng Ji <SikoJobs@xxxxxxxxxxx> --- net/core/filter.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/core/filter.c b/net/core/filter.c index bb0136e7a8e4..42cd7ec8cc4c 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -5206,6 +5206,9 @@ static int sol_tcp_sockopt(struct sock *sk, int optname, return do_tcp_getsockopt(sk, SOL_TCP, optname, KERNEL_SOCKPTR(optval), KERNEL_SOCKPTR(optlen)); + } else { + if (optname == TCP_SAVED_SYN) + return -EINVAL; } return do_tcp_setsockopt(sk, SOL_TCP, optname, -- 2.30.2