ppp: fix race conditions in ppp_fill_forward_path
In the Linux kernel, the following vulnerability has been resolved: ppp: fix race conditions in ppp_fill_forward_path ppp_fill_forward_path() has two race conditions: 1. The ppp->channels list can change between list_empty() and list_first_entry(), as ppp_lock() is not held. If the only channel is deleted in ppp_disconnect_channel(), list_first_entry() may access an empty head or a freed entry, and trigger a panic. 2. pch->chan can be NULL. When ppp_unregister_channel() is called, pch->chan is set to NULL before pch is removed from ppp->channels. Fix these by using a lockless RCU approach: - Use list_first_or_null_rcu() to safely test and access the first list entry. - Convert list modifications on ppp->channels to their RCU variants and add synchronize_net() after removal. - Check for a NULL pch->chan before dereferencing it.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.15.190, 6.1.149, 6.12.44, 6.16.4, 6.6.103
- CVEs
- CVE-2025-39673
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 7 Nov 2026, 10:41 UTC · Revision 1
Source evidence
ppp: fix race conditions in ppp_fill_forward_path
core-osv · Original sourcePublished 5 Sept 2025, 17:20 UTC
In the Linux kernel, the following vulnerability has been resolved: ppp: fix race conditions in ppp_fill_forward_path ppp_fill_forward_path() has two race conditions: 1. The ppp->channels list can change between list_empty() and list_first_entry(), as ppp_lock() is not held. If the only channel is deleted in ppp_disconnect_channel(), list_first_entry() may access an empty head or a freed entry, and trigger a panic. 2. pch->chan can be NULL. When ppp_unregister_channel() is called, pch->chan is set to NULL before pch is removed from ppp->channels. Fix these by using a lockless RCU approach: - Use list_first_or_null_rcu() to safely test and access the first list entry. - Convert list modifications on ppp->channels to their RCU variants and add synchronize_net() after removal. - Check for a NULL pch->chan before dereferencing it.
osv:CVE-2025-39673
Kernel
Fixed versions: 5.15.190, 6.1.149, 6.6.103, 6.12.44, 6.16.4
Complete source record
{
"id": "e4dfba1e103fd8d3c035cff8c609ec78977ac7620bf3117b7e63935f74c6943a",
"url": "https://osv.dev/vulnerability/CVE-2025-39673",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "ppp: fix race conditions in ppp_fill_forward_path",
"summary": "In the Linux kernel, the following vulnerability has been resolved: ppp: fix race conditions in ppp_fill_forward_path ppp_fill_forward_path() has two race conditions: 1. The ppp->channels list can change between list_empty() and list_first_entry(), as ppp_lock() is not held. If the only channel is deleted in ppp_disconnect_channel(), list_first_entry() may access an empty head or a freed entry, and trigger a panic. 2. pch->chan can be NULL. When ppp_unregister_channel() is called, pch->chan is set to NULL before pch is removed from ppp->channels. Fix these by using a lockless RCU approach: - Use list_first_or_null_rcu() to safely test and access the first list entry. - Convert list modifications on ppp->channels to their RCU variants and add synchronize_net() after removal. - Check for a NULL pch->chan before dereferencing it.",
"evidence": "osv:CVE-2025-39673",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.15.190",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.149",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.103",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.44",
"evidence": "/affected/1/ranges"
},
{
"value": "6.16.4",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "critical",
"structured": {
"id": "CVE-2025-39673",
"aliases": [
"CVE-2025-39673"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "f6efc675c9dd8d93f826b79ae7e33e03301db609"
},
{
"fixed": "9a1969fbffc1f1900d92d7594b1b7d8d72ef3dc7"
},
{
"fixed": "0f1630be6fcca3f0c63e4b242ad202e5cde28a40"
},
{
"fixed": "ca18d751bcc9faf5b7e82e9fae1223d103928181"
},
{
"fixed": "94731cc551e29511d85aa8dec61a6c071b1f2430"
},
{
"fixed": "f97f6475fdcb3c28ff3c55cc4b7bde632119ec08"
},
{
"fixed": "0417adf367a0af11adf7ace849af4638cfb573f7"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-39673.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.13.0"
},
{
"fixed": "5.15.190"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.149"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.103"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.44"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.16.4"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-39673.json"
}
}
],
"modified": "2026-10-28T02:30:50.439037785Z",
"provider": "osv",
"references": [
"https://cert-portal.siemens.com/productcert/html/ssa-032379.html",
"https://git.kernel.org/stable/c/0417adf367a0af11adf7ace849af4638cfb573f7",
"https://git.kernel.org/stable/c/0f1630be6fcca3f0c63e4b242ad202e5cde28a40",
"https://git.kernel.org/stable/c/94731cc551e29511d85aa8dec61a6c071b1f2430",
"https://git.kernel.org/stable/c/9a1969fbffc1f1900d92d7594b1b7d8d72ef3dc7",
"https://git.kernel.org/stable/c/ca18d751bcc9faf5b7e82e9fae1223d103928181",
"https://git.kernel.org/stable/c/f97f6475fdcb3c28ff3c55cc4b7bde632119ec08",
"https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/39xxx/CVE-2025-39673.json",
"https://nvd.nist.gov/vuln/detail/CVE-2025-39673",
"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/2025/39xxx/CVE-2025-39673.json"
}
},
"related_cves": [
{
"value": "CVE-2025-39673",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 519035,
"published_at": "2025-09-05T17:20:38.769+00:00"
}