tcp: tcp_rtx_synack() can be called from process context
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: 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_
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 4.14.283, 4.19.247, 4.9.318, 5.10.122, 5.15.47, 5.17.15, 5.18.4, 5.4.198
- CVEs
- CVE-2022-49372
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 2 Nov 2026, 20:33 UTC · Revision 1
Source evidence
tcp: tcp_rtx_synack() can be called from process context
core-osv · Original sourcePublished 26 Feb 2025, 02:11 UTC
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: 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_
osv:CVE-2022-49372
Kernel
Fixed versions: 4.9.318, 4.14.283, 4.19.247, 5.4.198, 5.10.122, 5.15.47, 5.17.15, 5.18.4
Complete source record
{
"id": "daf453aaf4f75c329fc0100aca2e38b83f71f7af8e110ce3349706717404c5b2",
"url": "https://osv.dev/vulnerability/CVE-2022-49372",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "tcp: tcp_rtx_synack() can be called from process context",
"summary": "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: 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_",
"evidence": "osv:CVE-2022-49372",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "4.9.318",
"evidence": "/affected/1/ranges"
},
{
"value": "4.14.283",
"evidence": "/affected/1/ranges"
},
{
"value": "4.19.247",
"evidence": "/affected/1/ranges"
},
{
"value": "5.4.198",
"evidence": "/affected/1/ranges"
},
{
"value": "5.10.122",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.47",
"evidence": "/affected/1/ranges"
},
{
"value": "5.17.15",
"evidence": "/affected/1/ranges"
},
{
"value": "5.18.4",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2022-49372",
"aliases": [
"CVE-2022-49372"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "168a8f58059a22feb9e9a2dcc1b8053dbbbc12ef"
},
{
"fixed": "3db889f883e65bbd3b1401279bfc1e9ed255c481"
},
{
"fixed": "c348b0f8d035fc4bdc040796889beec7218bd1b8"
},
{
"fixed": "58bd38cbc961fd799842b7be8c5222310f04b908"
},
{
"fixed": "d05c2fdf8e10528bb6751bd95243e862d5402a9b"
},
{
"fixed": "0a0f7f84148445c9f02f226928803a870139d820"
},
{
"fixed": "88cd232146207ff1d41dededed5e77c0d4438113"
},
{
"fixed": "bdc28a8fb43cc476e33b11519235adb816ce00e8"
},
{
"fixed": "d8e1bc6029acac796293310aacef7b7336f35b6a"
},
{
"fixed": "0a375c822497ed6ad6b5da0792a12a6f1af10c0b"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2022-49372.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "3.7.0"
},
{
"fixed": "4.9.318"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.10.0"
},
{
"fixed": "4.14.283"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.15.0"
},
{
"fixed": "4.19.247"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.20.0"
},
{
"fixed": "5.4.198"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.5.0"
},
{
"fixed": "5.10.122"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.47"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "5.17.15"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.18.0"
},
{
"fixed": "5.18.4"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2022-49372.json"
}
}
],
"modified": "2026-10-28T02:30:23.499359393Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/0a0f7f84148445c9f02f226928803a870139d820",
"https://git.kernel.org/stable/c/0a375c822497ed6ad6b5da0792a12a6f1af10c0b",
"https://git.kernel.org/stable/c/3db889f883e65bbd3b1401279bfc1e9ed255c481",
"https://git.kernel.org/stable/c/58bd38cbc961fd799842b7be8c5222310f04b908",
"https://git.kernel.org/stable/c/88cd232146207ff1d41dededed5e77c0d4438113",
"https://git.kernel.org/stable/c/bdc28a8fb43cc476e33b11519235adb816ce00e8",
"https://git.kernel.org/stable/c/c348b0f8d035fc4bdc040796889beec7218bd1b8",
"https://git.kernel.org/stable/c/d05c2fdf8e10528bb6751bd95243e862d5402a9b",
"https://git.kernel.org/stable/c/d8e1bc6029acac796293310aacef7b7336f35b6a",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49372.json",
"https://nvd.nist.gov/vuln/detail/CVE-2022-49372",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49372.json"
}
},
"related_cves": [
{
"value": "CVE-2022-49372",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 489887,
"published_at": "2025-02-26T02:11:14.119+00:00"
}