In the Linux kernel, the following vulnerability has been resolved:
media: pvrusb2: fix uaf in pvr2contextset_notify
[Syzbot reported] BUG: KASAN: slab-use-after-free in pvr2contextset_notify+0x2c4/0x310 drivers/media/usb/pvrusb2/pvrusb2-context.c:35 Read of size 4 at addr ffff888113aeb0d8 by task kworker/1:1/26
CPU: 1 PID: 26 Comm: kworker/1:1 Not tainted 6.8.0-rc1-syzkaller-00046-gf1a27f081c1f #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/25/2024 Workqueue: usbhubwq hubevent Call Trace: <TASK> _dumpstack lib/dumpstack.c:88 [inline] dumpstacklvl+0xd9/0x1b0 lib/dumpstack.c:106 printaddressdescription mm/kasan/report.c:377 [inline] printreport+0xc4/0x620 mm/kasan/report.c:488 kasanreport+0xda/0x110 mm/kasan/report.c:601 pvr2contextsetnotify+0x2c4/0x310 drivers/media/usb/pvrusb2/pvrusb2-context.c:35 pvr2contextnotify drivers/media/usb/pvrusb2/pvrusb2-context.c:95 [inline] pvr2contextdisconnect+0x94/0xb0 drivers/media/usb/pvrusb2/pvrusb2-context.c:272
Freed by task 906: kasansavestack+0x33/0x50 mm/kasan/common.c:47 kasansavetrack+0x14/0x30 mm/kasan/common.c:68 kasansavefreeinfo+0x3f/0x60 mm/kasan/generic.c:640 poisonslabobject mm/kasan/common.c:241 [inline] _kasanslabfree+0x106/0x1b0 mm/kasan/common.c:257 kasanslabfree include/linux/kasan.h:184 [inline] slabfreehook mm/slub.c:2121 [inline] slabfree mm/slub.c:4299 [inline] kfree+0x105/0x340 mm/slub.c:4409 pvr2contextcheck drivers/media/usb/pvrusb2/pvrusb2-context.c:137 [inline] pvr2contextthreadfunc+0x69d/0x960 drivers/media/usb/pvrusb2/pvrusb2-context.c:158
[Analyze] Task A set disconnect_flag = !0, which resulted in Task B's condition being met and releasing mp, leading to this issue.
[Fix] Place the disconnectflag assignment operation after all code in pvr2context_disconnect() to avoid this issue.
{ "vanir_signatures": [ { "digest": { "threshold": 0.9, "line_hashes": [ "337199644493644537683324539235603907489", "15758631490858367549126720033330462576", "254260846217100114210615237762469636231", "235267662137865295509740747772204080844", "47283088658129130999798459596927521073", "296083914586674035031787357217628684114" ] }, "target": { "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8e60b99f6b7ccb3badeb512f5eb613ad45904592", "id": "CVE-2024-26875-202e00c1", "signature_version": "v1", "deprecated": false, "signature_type": "Line" }, { "digest": { "threshold": 0.9, "line_hashes": [ "337199644493644537683324539235603907489", "15758631490858367549126720033330462576", "254260846217100114210615237762469636231", "235267662137865295509740747772204080844", "47283088658129130999798459596927521073", "296083914586674035031787357217628684114" ] }, "target": { "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@eb6e9dce979c08210ff7249e5e0eceb8991bfcd7", "id": "CVE-2024-26875-2668e02f", "signature_version": "v1", "deprecated": false, "signature_type": "Line" }, { "digest": { "function_hash": "132345161273004050068434511104519194377", "length": 140.0 }, "target": { "function": "pvr2_context_disconnect", "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8e60b99f6b7ccb3badeb512f5eb613ad45904592", "id": "CVE-2024-26875-28fabb5c", "signature_version": "v1", "deprecated": false, "signature_type": "Function" }, { "digest": { "threshold": 0.9, "line_hashes": [ "337199644493644537683324539235603907489", "15758631490858367549126720033330462576", "254260846217100114210615237762469636231", "235267662137865295509740747772204080844", "47283088658129130999798459596927521073", "296083914586674035031787357217628684114" ] }, "target": { "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@40cd818fae875c424a8335009db33c7b5a07de3a", "id": "CVE-2024-26875-3bce47fd", "signature_version": "v1", "deprecated": false, "signature_type": "Line" }, { "digest": { "function_hash": "132345161273004050068434511104519194377", "length": 140.0 }, "target": { "function": "pvr2_context_disconnect", "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d29ed08964cec8b9729bc55c7bb23f679d7a18fb", "id": "CVE-2024-26875-483d5064", "signature_version": "v1", "deprecated": false, "signature_type": "Function" }, { "digest": { "threshold": 0.9, "line_hashes": [ "337199644493644537683324539235603907489", "15758631490858367549126720033330462576", "254260846217100114210615237762469636231", "235267662137865295509740747772204080844", "47283088658129130999798459596927521073", "296083914586674035031787357217628684114" ] }, "target": { "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ab896d93fd6a2cd1afeb034c3cc9226cb499209f", "id": "CVE-2024-26875-52832368", "signature_version": "v1", "deprecated": false, "signature_type": "Line" }, { "digest": { "function_hash": "132345161273004050068434511104519194377", "length": 140.0 }, "target": { "function": "pvr2_context_disconnect", "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3a1ec89708d2e57e2712f46241282961b1a7a475", "id": "CVE-2024-26875-6d3014bf", "signature_version": "v1", "deprecated": false, "signature_type": "Function" }, { "digest": { "function_hash": "132345161273004050068434511104519194377", "length": 140.0 }, "target": { "function": "pvr2_context_disconnect", "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@40cd818fae875c424a8335009db33c7b5a07de3a", "id": "CVE-2024-26875-6ef9cf53", "signature_version": "v1", "deprecated": false, "signature_type": "Function" }, { "digest": { "function_hash": "132345161273004050068434511104519194377", "length": 140.0 }, "target": { "function": "pvr2_context_disconnect", "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ed8000e1e8e9684ab6c30cf2b526c0cea039929c", "id": "CVE-2024-26875-75bdc6f7", "signature_version": "v1", "deprecated": false, "signature_type": "Function" }, { "digest": { "threshold": 0.9, "line_hashes": [ "337199644493644537683324539235603907489", "15758631490858367549126720033330462576", "254260846217100114210615237762469636231", "235267662137865295509740747772204080844", "47283088658129130999798459596927521073", "296083914586674035031787357217628684114" ] }, "target": { "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d29ed08964cec8b9729bc55c7bb23f679d7a18fb", "id": "CVE-2024-26875-8658ea9a", "signature_version": "v1", "deprecated": false, "signature_type": "Line" }, { "digest": { "function_hash": "132345161273004050068434511104519194377", "length": 140.0 }, "target": { "function": "pvr2_context_disconnect", "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ab896d93fd6a2cd1afeb034c3cc9226cb499209f", "id": "CVE-2024-26875-871c7654", "signature_version": "v1", "deprecated": false, "signature_type": "Function" }, { "digest": { "threshold": 0.9, "line_hashes": [ "337199644493644537683324539235603907489", "15758631490858367549126720033330462576", "254260846217100114210615237762469636231", "235267662137865295509740747772204080844", "47283088658129130999798459596927521073", "296083914586674035031787357217628684114" ] }, "target": { "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@eaa410e05bdf562c90b23cdf2d9327f9c4625e16", "id": "CVE-2024-26875-936a705e", "signature_version": "v1", "deprecated": false, "signature_type": "Line" }, { "digest": { "threshold": 0.9, "line_hashes": [ "337199644493644537683324539235603907489", "15758631490858367549126720033330462576", "254260846217100114210615237762469636231", "235267662137865295509740747772204080844", "47283088658129130999798459596927521073", "296083914586674035031787357217628684114" ] }, "target": { "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@ed8000e1e8e9684ab6c30cf2b526c0cea039929c", "id": "CVE-2024-26875-9557640e", "signature_version": "v1", "deprecated": false, "signature_type": "Line" }, { "digest": { "function_hash": "132345161273004050068434511104519194377", "length": 140.0 }, "target": { "function": "pvr2_context_disconnect", "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@eb6e9dce979c08210ff7249e5e0eceb8991bfcd7", "id": "CVE-2024-26875-afa337d6", "signature_version": "v1", "deprecated": false, "signature_type": "Function" }, { "digest": { "function_hash": "132345161273004050068434511104519194377", "length": 140.0 }, "target": { "function": "pvr2_context_disconnect", "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@eaa410e05bdf562c90b23cdf2d9327f9c4625e16", "id": "CVE-2024-26875-bba37b8d", "signature_version": "v1", "deprecated": false, "signature_type": "Function" }, { "digest": { "threshold": 0.9, "line_hashes": [ "337199644493644537683324539235603907489", "15758631490858367549126720033330462576", "254260846217100114210615237762469636231", "235267662137865295509740747772204080844", "47283088658129130999798459596927521073", "296083914586674035031787357217628684114" ] }, "target": { "file": "drivers/media/usb/pvrusb2/pvrusb2-context.c" }, "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3a1ec89708d2e57e2712f46241282961b1a7a475", "id": "CVE-2024-26875-e08898a9", "signature_version": "v1", "deprecated": false, "signature_type": "Line" } ] }