In the Linux kernel, the following vulnerability has been resolved:
ppp: fix race conditions in pppfillforward_path
pppfillforward_path() has two race conditions:
The ppp->channels list can change between listempty() and listfirstentry(), as ppplock() is not held. If the only channel is deleted in pppdisconnectchannel(), listfirstentry() may access an empty head or a freed entry, and trigger a panic.
pch->chan can be NULL. When pppunregisterchannel() is called, pch->chan is set to NULL before pch is removed from ppp->channels.
Fix these by using a lockless RCU approach: - Use listfirstornullrcu() 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.
[
{
"deprecated": false,
"id": "CVE-2025-39673-61d19e5d",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a1969fbffc1f1900d92d7594b1b7d8d72ef3dc7",
"target": {
"file": "drivers/net/ppp/ppp_generic.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"10857646922865941936749462875598401594",
"265629010715902532715284446279787245064",
"159968034226618125367426879650314884293",
"69157571647265101860373548604647534908",
"148784930969584941300266834248134024741",
"20230726952488981106596449282983158670",
"82179684705497923687574940465593605350",
"313235017311299433551348258119397578047",
"196083999140292237943397798144841658200",
"12029911053234986626555293781806104353",
"242961555537199957593914659753309991845",
"286195210033190904089222096365541927365",
"42308253995544244182349702314735203913",
"137283370337524167284114768714510781603",
"321382193104403356234961565198428531697",
"66519969699992763812503915029254922388",
"209510062204430236605217337623488394277",
"27849938720514731129430825948622953452",
"190892725177019993156591410997737137320",
"89247316511161862032102611896211364041",
"186944106160115852520905187553530959120",
"179526681039626350668564397872656784553",
"328195482321742485461211169845541966821",
"88367738134257569305952934892228638462",
"242878850667769474643409496453600145641",
"146617563144860427703039467467191341430"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39673-8c11951a",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a1969fbffc1f1900d92d7594b1b7d8d72ef3dc7",
"target": {
"file": "drivers/net/ppp/ppp_generic.c",
"function": "ppp_disconnect_channel"
},
"digest": {
"function_hash": "158996243522906910931297689739424850337",
"length": 423.0
}
},
{
"deprecated": false,
"id": "CVE-2025-39673-a936b370",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a1969fbffc1f1900d92d7594b1b7d8d72ef3dc7",
"target": {
"file": "drivers/net/ppp/ppp_generic.c",
"function": "ppp_fill_forward_path"
},
"digest": {
"function_hash": "27057234458109182746685483243116875238",
"length": 452.0
}
},
{
"deprecated": false,
"id": "CVE-2025-39673-aec6c370",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9a1969fbffc1f1900d92d7594b1b7d8d72ef3dc7",
"target": {
"file": "drivers/net/ppp/ppp_generic.c",
"function": "ppp_unregister_channel"
},
"digest": {
"function_hash": "28099509899826599750422301601425395306",
"length": 583.0
}
}
]