In the Linux kernel, the following vulnerability has been resolved:
exfat: fix random stack corruption after get_block
When getblock is called with a bufferhead allocated on the stack, such as dompagereadpage, stack corruption due to buffer_head UAF may occur in the following race condition situation.
<CPU 0> <CPU 1>
mpagereadfolio <<bh on stack>> dompagereadpage exfatgetblock bh_read __bhread getbh(bh) submitbh waitonbuffer ... endbufferreadsync __endbufferreadnotouch unlockbuffer <<keep going>> ... ... ... ... <<bh is not valid out of mpagereadfolio>> . . anotherfunction <<variable A on stack>> putbh(bh) atomicdec(bh->bcount) * stack corruption here *
This patch returns -EAGAIN if a folio does not have buffers when bhread needs to be called. By doing this, the caller can fallback to functions like blockreadfullfolio(), create a bufferhead in the folio, and then call getblock again.
Let's do not call bhread() with on-stack bufferhead.
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/22xxx/CVE-2025-22036.json"
}"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-22036.json"
[
{
"signature_version": "v1",
"target": {
"file": "fs/exfat/inode.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@49b0a6ab8e528a0c1c50e37cef9b9c7c121365f2",
"deprecated": false,
"digest": {
"line_hashes": [
"39369033618176617488055725797295418827",
"220565578559665038205163505349068850445",
"309866596014286073777046594658907824208",
"49795299144915144465287509042208446071",
"69275115081776500904546955202395343610",
"287200565914811718446910778253564561433",
"223066303825561420644584125405314953918",
"273737245289027503842642533654702570304",
"265640560442691535540276968357228377613",
"272653439903131089037951613978958654462",
"215466107820663658695092941611725363299",
"72723981675123741055309109213491485630",
"263066012294777101660153284935979385001",
"285461944835065014784841917207993236387",
"683403756105609177874383991181668515",
"202748498698086737697515179275049506565",
"240544082771141837389021724182222615736",
"132402927482702682898101710312558237302",
"46311356250773778107713477586757301390",
"82800678737817158568702467947708153992"
],
"threshold": 0.9
},
"id": "CVE-2025-22036-48016f65",
"signature_type": "Line"
},
{
"signature_version": "v1",
"target": {
"file": "fs/exfat/inode.c",
"function": "exfat_get_block"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@49b0a6ab8e528a0c1c50e37cef9b9c7c121365f2",
"deprecated": false,
"digest": {
"function_hash": "137070133949232653412761293334749813189",
"length": 1981.0
},
"id": "CVE-2025-22036-967d96cc",
"signature_type": "Function"
}
]