CVE-2022-49372

EUVD-2022-54857
In the Linux kernel, the following vulnerability has been resolved:

tcp: tcp_rtx_synack() can be called from process context

Laurent reported the enclosed report [1]

This bug triggers with following coditions:

0) Kernel built with CONFIG_DEBUG_PREEMPT=y

1) A new passive FastOpen TCP socket is created.
   This FO socket waits for an ACK coming from client to be a complete
   ESTABLISHED one.
2) A socket operation on this socket goes through lock_sock()
   release_sock() dance.
3) While the socket is owned by the user in step 2),
   a retransmit of the SYN is received and stored in socket backlog.
4) At release_sock() time, the socket backlog is processed while
   in process context.
5) A SYNACK packet is cooked in response of the SYN retransmit.
6) -> tcp_rtx_synack() is called in process context.

Before blamed commit, tcp_rtx_synack() was always called from BH handler,
from a timer handler.

Fix this by using TCP_INC_STATS() & NET_INC_STATS()
which do not assume caller is in non preemptible context.

[1]
BUG: using __this_cpu_add() in preemptible [00000000] code: epollpep/2180
caller is tcp_rtx_synack.part.0+0x36/0xc0
CPU: 10 PID: 2180 Comm: epollpep Tainted: G           OE     5.16.0-0.bpo.4-amd64 #1  Debian 5.16.12-1~bpo11+1
Hardware name: Supermicro SYS-5039MC-H8TRF/X11SCD-F, BIOS 1.7 11/23/2021
Call Trace:
 <TASK>
 dump_stack_lvl+0x48/0x5e
 check_preemption_disabled+0xde/0xe0
 tcp_rtx_synack.part.0+0x36/0xc0
 tcp_rtx_synack+0x8d/0xa0
 ? kmem_cache_alloc+0x2e0/0x3e0
 ? apparmor_file_alloc_security+0x3b/0x1f0
 inet_rtx_syn_ack+0x16/0x30
 tcp_check_req+0x367/0x610
 tcp_rcv_state_process+0x91/0xf60
 ? get_nohz_timer_target+0x18/0x1a0
 ? lock_timer_base+0x61/0x80
 ? preempt_count_add+0x68/0xa0
 tcp_v4_do_rcv+0xbd/0x270
 __release_sock+0x6d/0xb0
 release_sock+0x2b/0x90
 sock_setsockopt+0x138/0x1140
 ? __sys_getsockname+0x7e/0xc0
 ? aa_sk_perm+0x3e/0x1a0
 __sys_setsockopt+0x198/0x1e0
 __x64_sys_setsockopt+0x21/0x30
 do_syscall_64+0x38/0xc0
 entry_SYSCALL_64_after_hwframe+0x44/0xae
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
NISTPrimary
5.5 MEDIUM
LOCAL
LOW
LOW
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Base Score
CVSS 3.x
EPSS Score
Percentile: 4%
Affected Products (NVD)
VendorProductVersion
linuxlinux_kernel
3.7 ≤
𝑥
< 4.9.318
linuxlinux_kernel
4.10 ≤
𝑥
< 4.14.283
linuxlinux_kernel
4.15 ≤
𝑥
< 4.19.247
linuxlinux_kernel
4.20 ≤
𝑥
< 5.4.198
linuxlinux_kernel
5.5 ≤
𝑥
< 5.10.122
linuxlinux_kernel
5.11 ≤
𝑥
< 5.15.47
linuxlinux_kernel
5.16 ≤
𝑥
< 5.17.15
linuxlinux_kernel
5.18 ≤
𝑥
< 5.18.4
𝑥
= Vulnerable software versions
Debian logo
Debian Releases
Debian Product
Codename
linux
bookworm
6.1.123-1
fixed
bookworm (security)
6.1.128-1
fixed
bullseye
5.10.223-1
fixed
bullseye (security)
5.10.234-1
fixed
sid
6.12.16-1
fixed
trixie
6.12.12-1
fixed
openSUSE logo
openSUSE / SLES Releases
openSUSE Product
Release
cluster-md-kmp-default
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
dlm-kmp-default
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
gfs2-kmp-default
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
kernel-default
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
kernel-default-base
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
kernel-default-man
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
kernel-macros
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
kernel-source
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
kernel-syms
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
ocfs2-kmp-default
suse enterprise server 12 SP5
4.12.14-122.255.1
fixed
Red Hat logo
Red Hat Enterprise Linux Releases
Red Hat Product
Release
bpftool
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:7.0.0-284.11.1.el9_2
fixed
kernel
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-core
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-debug
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-debug-core
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-debug-devel
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-debug-devel-matched
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-debug-modules
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-debug-modules-core
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-debug-modules-extra
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-devel
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-devel-matched
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-modules
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-modules-core
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-64k-modules-extra
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-abi-stablelists
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-core
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-debug
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-debug-core
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-debug-devel
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-debug-devel-matched
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-debug-modules
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-debug-modules-core
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-debug-modules-extra
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-debug-uki-virt
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-devel
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-devel-matched
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-doc
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-modules
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-modules-core
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-modules-extra
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-tools
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-tools-libs
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-tools-libs-devel
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-uki-virt
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-zfcpdump
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-zfcpdump-core
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-zfcpdump-devel
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-zfcpdump-devel-matched
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-zfcpdump-modules
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-zfcpdump-modules-core
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
kernel-zfcpdump-modules-extra
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
perf
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
python3-perf
RHEL 8
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 AUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 E4S
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 EUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 8.8 TUS
0:4.18.0-477.10.1.el8_8
fixed
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed
rtla
RHEL 9
0:5.14.0-284.11.1.el9_2
fixed