In the Linux kernel, the following vulnerability has been resolved:
f2fs: fix NULL pointer dereference in f2fssubmitpage_write()
BUG: kernel NULL pointer dereference, address: 0000000000000014 RIP: 0010:f2fssubmitpagewrite+0x6cf/0x780 [f2fs] Call Trace: <TASK> ? showregs+0x6e/0x80 ? _die+0x29/0x70 ? pagefaultoops+0x154/0x4a0 ? prbreadvalid+0x20/0x30 ? _irqworkqueuelocal+0x39/0xd0 ? irqworkqueue+0x36/0x70 ? douseraddrfault+0x314/0x6c0 ? excpagefault+0x7d/0x190 ? asmexcpagefault+0x2b/0x30 ? f2fssubmitpagewrite+0x6cf/0x780 [f2fs] ? f2fssubmitpagewrite+0x736/0x780 [f2fs] dowritepage+0x50/0x170 [f2fs] f2fsoutplacewritedata+0x61/0xb0 [f2fs] f2fsdowritedatapage+0x3f8/0x660 [f2fs] f2fswritesingledatapage+0x5bb/0x7a0 [f2fs] f2fswritecachepages+0x3da/0xbe0 [f2fs] ... It is possible that other threads have added this fio to io->bio and submitted the io->bio before entering f2fssubmitpagewrite(). At this point io->bio = NULL. If isendzoneblkaddr(sbi, fio->newblkaddr) of this fio is true, then an NULL pointer dereference error occurs at bio_get(io->bio). The original code for determining zone end was after "out:", which would have missed some fio who is zone end. I've moved this code before "skip:" to make sure it's done for each fio.
[
{
"signature_type": "Function",
"digest": {
"function_hash": "339318784072756299141618452852247179938",
"length": 2534.0
},
"target": {
"file": "fs/f2fs/data.c",
"function": "f2fs_submit_page_write"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6d102382a11d5e6035f6c98f6e508a38541f7af3",
"id": "CVE-2024-26871-099f2eff",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"83800491928962045915341637305247479027",
"49016818399308289422060330596915298451",
"177882204311844386760124497627631337563",
"15813237375289672676562917988263226873",
"16207913530126430271773448556082583631",
"135664621917754526692096281308071181254",
"66092985854217989890239281833235450535",
"315798930765623091491619768346808411444",
"301897999763890030947980994019406260246",
"47051973682732364904234495953166385644",
"152359364295004116178826986415949631552"
]
},
"target": {
"file": "fs/f2fs/data.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6d102382a11d5e6035f6c98f6e508a38541f7af3",
"id": "CVE-2024-26871-0e18ffee",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"83800491928962045915341637305247479027",
"49016818399308289422060330596915298451",
"177882204311844386760124497627631337563",
"15813237375289672676562917988263226873",
"16207913530126430271773448556082583631",
"135664621917754526692096281308071181254",
"66092985854217989890239281833235450535",
"315798930765623091491619768346808411444",
"301897999763890030947980994019406260246",
"47051973682732364904234495953166385644",
"152359364295004116178826986415949631552"
]
},
"target": {
"file": "fs/f2fs/data.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c2034ef6192a65a986a45c2aa2ed05824fdc0e9f",
"id": "CVE-2024-26871-11c7c82c",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "339318784072756299141618452852247179938",
"length": 2534.0
},
"target": {
"file": "fs/f2fs/data.c",
"function": "f2fs_submit_page_write"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4c122a32582b67bdd44ca8d25f894ee2dc54f566",
"id": "CVE-2024-26871-623c2c6f",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"83800491928962045915341637305247479027",
"49016818399308289422060330596915298451",
"177882204311844386760124497627631337563",
"15813237375289672676562917988263226873",
"16207913530126430271773448556082583631",
"135664621917754526692096281308071181254",
"66092985854217989890239281833235450535",
"315798930765623091491619768346808411444",
"301897999763890030947980994019406260246",
"47051973682732364904234495953166385644",
"152359364295004116178826986415949631552"
]
},
"target": {
"file": "fs/f2fs/data.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8e2ea8b04cb8d976110c4568509e67d6a39b2889",
"id": "CVE-2024-26871-7def821b",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "339318784072756299141618452852247179938",
"length": 2534.0
},
"target": {
"file": "fs/f2fs/data.c",
"function": "f2fs_submit_page_write"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8e2ea8b04cb8d976110c4568509e67d6a39b2889",
"id": "CVE-2024-26871-9f42276b",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Function",
"digest": {
"function_hash": "339318784072756299141618452852247179938",
"length": 2534.0
},
"target": {
"file": "fs/f2fs/data.c",
"function": "f2fs_submit_page_write"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c2034ef6192a65a986a45c2aa2ed05824fdc0e9f",
"id": "CVE-2024-26871-c202fcaf",
"deprecated": false,
"signature_version": "v1"
},
{
"signature_type": "Line",
"digest": {
"threshold": 0.9,
"line_hashes": [
"83800491928962045915341637305247479027",
"49016818399308289422060330596915298451",
"177882204311844386760124497627631337563",
"15813237375289672676562917988263226873",
"16207913530126430271773448556082583631",
"135664621917754526692096281308071181254",
"66092985854217989890239281833235450535",
"315798930765623091491619768346808411444",
"301897999763890030947980994019406260246",
"47051973682732364904234495953166385644",
"152359364295004116178826986415949631552"
]
},
"target": {
"file": "fs/f2fs/data.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@4c122a32582b67bdd44ca8d25f894ee2dc54f566",
"id": "CVE-2024-26871-e51eed54",
"deprecated": false,
"signature_version": "v1"
}
]