In the Linux kernel, the following vulnerability has been resolved:
RDMA/irdma: Fix KASAN issue with tasklet
KASAN testing revealed the following issue assocated with freeing an IRQ.
[50006.466686] Call Trace: [50006.466691] <IRQ> [50006.489538] dumpstack+0x5c/0x80 [50006.493475] printaddressdescription.constprop.6+0x1a/0x150 [50006.499872] ? irdmascprocessceq+0x483/0x790 [irdma] [50006.505742] ? irdmascprocessceq+0x483/0x790 [irdma] [50006.511644] kasanreport.cold.11+0x7f/0x118 [50006.516572] ? irdmascprocessceq+0x483/0x790 [irdma] [50006.522473] irdmascprocessceq+0x483/0x790 [irdma] [50006.528232] irdmaprocessceq+0xb2/0x400 [irdma] [50006.533601] ? irdmahwflushwqescallback+0x370/0x370 [irdma] [50006.540298] irdmaceqdpc+0x44/0x100 [irdma] [50006.545306] taskletactioncommon.isra.14+0x148/0x2c0 [50006.551096] _dosoftirq+0x1d0/0xaf8 [50006.555396] irqexitrcu+0x219/0x260 [50006.559670] irqexit+0xa/0x20 [50006.563320] smpapictimerinterrupt+0x1bf/0x690 [50006.568645] apictimerinterrupt+0xf/0x20 [50006.573341] </IRQ>
The issue is that a tasklet could be pending on another core racing the delete of the irq.
Fix by insuring any scheduled tasklet is killed after deleting the irq.
{ "vanir_signatures": [ { "id": "CVE-2024-26838-287e6e91", "signature_type": "Line", "target": { "file": "drivers/infiniband/hw/irdma/hw.c" }, "deprecated": false, "digest": { "line_hashes": [ "231103288816380712971694550230094835175", "210913077028195380734499569520192767102", "99905242948311252575261655362026851306", "265959493536415377041203733119431842569" ], "threshold": 0.9 }, "signature_version": "v1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bd97cea7b18a0a553773af806dfbfac27a7c4acb" }, { "id": "CVE-2024-26838-360d7c4b", "signature_type": "Line", "target": { "file": "drivers/infiniband/hw/irdma/hw.c" }, "deprecated": false, "digest": { "line_hashes": [ "307586440998564334616357541874722047010", "45150080092540988550135865103757037587", "101108171210491062497998478450714717261", "246429091470550886503572363906348726208" ], "threshold": 0.9 }, "signature_version": "v1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@635d79aa477f9912e602feb5498bdd51fb9cb824" }, { "id": "CVE-2024-26838-449a9cc7", "signature_type": "Line", "target": { "file": "drivers/infiniband/hw/irdma/hw.c" }, "deprecated": false, "digest": { "line_hashes": [ "231103288816380712971694550230094835175", "210913077028195380734499569520192767102", "99905242948311252575261655362026851306", "265959493536415377041203733119431842569" ], "threshold": 0.9 }, "signature_version": "v1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0ae8ad0013978f7471f22bcf45b027393e87f5dc" }, { "id": "CVE-2024-26838-5ea6e87e", "signature_type": "Function", "target": { "file": "drivers/infiniband/hw/irdma/hw.c", "function": "irdma_destroy_irq" }, "deprecated": false, "digest": { "length": 237.0, "function_hash": "126845987234621383275710136050992659591" }, "signature_version": "v1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bd97cea7b18a0a553773af806dfbfac27a7c4acb" }, { "id": "CVE-2024-26838-77e5f542", "signature_type": "Function", "target": { "file": "drivers/infiniband/hw/irdma/hw.c", "function": "irdma_destroy_irq" }, "deprecated": false, "digest": { "length": 237.0, "function_hash": "126845987234621383275710136050992659591" }, "signature_version": "v1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@635d79aa477f9912e602feb5498bdd51fb9cb824" }, { "id": "CVE-2024-26838-95b9c434", "signature_type": "Function", "target": { "file": "drivers/infiniband/hw/irdma/hw.c", "function": "irdma_destroy_irq" }, "deprecated": false, "digest": { "length": 237.0, "function_hash": "126845987234621383275710136050992659591" }, "signature_version": "v1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0ae8ad0013978f7471f22bcf45b027393e87f5dc" }, { "id": "CVE-2024-26838-af2ae707", "signature_type": "Function", "target": { "file": "drivers/infiniband/hw/irdma/hw.c", "function": "irdma_destroy_irq" }, "deprecated": false, "digest": { "length": 237.0, "function_hash": "126845987234621383275710136050992659591" }, "signature_version": "v1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b2e4a5266e3d133b4c7f0e43bf40d13ce14fd1aa" }, { "id": "CVE-2024-26838-b1653bf6", "signature_type": "Line", "target": { "file": "drivers/infiniband/hw/irdma/hw.c" }, "deprecated": false, "digest": { "line_hashes": [ "231103288816380712971694550230094835175", "210913077028195380734499569520192767102", "99905242948311252575261655362026851306", "265959493536415377041203733119431842569" ], "threshold": 0.9 }, "signature_version": "v1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b2e4a5266e3d133b4c7f0e43bf40d13ce14fd1aa" }, { "id": "CVE-2024-26838-defbf853", "signature_type": "Function", "target": { "file": "drivers/infiniband/hw/irdma/hw.c", "function": "irdma_destroy_irq" }, "deprecated": false, "digest": { "length": 237.0, "function_hash": "126845987234621383275710136050992659591" }, "signature_version": "v1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c6f1ca235f68b22b3e691b2ea87ac285e5946848" }, { "id": "CVE-2024-26838-ed2257a4", "signature_type": "Line", "target": { "file": "drivers/infiniband/hw/irdma/hw.c" }, "deprecated": false, "digest": { "line_hashes": [ "231103288816380712971694550230094835175", "210913077028195380734499569520192767102", "99905242948311252575261655362026851306", "265959493536415377041203733119431842569" ], "threshold": 0.9 }, "signature_version": "v1", "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c6f1ca235f68b22b3e691b2ea87ac285e5946848" } ] }