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.
[
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"231103288816380712971694550230094835175",
"210913077028195380734499569520192767102",
"99905242948311252575261655362026851306",
"265959493536415377041203733119431842569"
]
},
"signature_type": "Line",
"target": {
"file": "drivers/infiniband/hw/irdma/hw.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bd97cea7b18a0a553773af806dfbfac27a7c4acb",
"id": "CVE-2024-26838-287e6e91"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"307586440998564334616357541874722047010",
"45150080092540988550135865103757037587",
"101108171210491062497998478450714717261",
"246429091470550886503572363906348726208"
]
},
"signature_type": "Line",
"target": {
"file": "drivers/infiniband/hw/irdma/hw.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@635d79aa477f9912e602feb5498bdd51fb9cb824",
"id": "CVE-2024-26838-360d7c4b"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"231103288816380712971694550230094835175",
"210913077028195380734499569520192767102",
"99905242948311252575261655362026851306",
"265959493536415377041203733119431842569"
]
},
"signature_type": "Line",
"target": {
"file": "drivers/infiniband/hw/irdma/hw.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0ae8ad0013978f7471f22bcf45b027393e87f5dc",
"id": "CVE-2024-26838-449a9cc7"
},
{
"digest": {
"length": 237.0,
"function_hash": "126845987234621383275710136050992659591"
},
"signature_type": "Function",
"target": {
"function": "irdma_destroy_irq",
"file": "drivers/infiniband/hw/irdma/hw.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bd97cea7b18a0a553773af806dfbfac27a7c4acb",
"id": "CVE-2024-26838-5ea6e87e"
},
{
"digest": {
"length": 237.0,
"function_hash": "126845987234621383275710136050992659591"
},
"signature_type": "Function",
"target": {
"function": "irdma_destroy_irq",
"file": "drivers/infiniband/hw/irdma/hw.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@635d79aa477f9912e602feb5498bdd51fb9cb824",
"id": "CVE-2024-26838-77e5f542"
},
{
"digest": {
"length": 237.0,
"function_hash": "126845987234621383275710136050992659591"
},
"signature_type": "Function",
"target": {
"function": "irdma_destroy_irq",
"file": "drivers/infiniband/hw/irdma/hw.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0ae8ad0013978f7471f22bcf45b027393e87f5dc",
"id": "CVE-2024-26838-95b9c434"
},
{
"digest": {
"length": 237.0,
"function_hash": "126845987234621383275710136050992659591"
},
"signature_type": "Function",
"target": {
"function": "irdma_destroy_irq",
"file": "drivers/infiniband/hw/irdma/hw.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b2e4a5266e3d133b4c7f0e43bf40d13ce14fd1aa",
"id": "CVE-2024-26838-af2ae707"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"231103288816380712971694550230094835175",
"210913077028195380734499569520192767102",
"99905242948311252575261655362026851306",
"265959493536415377041203733119431842569"
]
},
"signature_type": "Line",
"target": {
"file": "drivers/infiniband/hw/irdma/hw.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b2e4a5266e3d133b4c7f0e43bf40d13ce14fd1aa",
"id": "CVE-2024-26838-b1653bf6"
},
{
"digest": {
"length": 237.0,
"function_hash": "126845987234621383275710136050992659591"
},
"signature_type": "Function",
"target": {
"function": "irdma_destroy_irq",
"file": "drivers/infiniband/hw/irdma/hw.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c6f1ca235f68b22b3e691b2ea87ac285e5946848",
"id": "CVE-2024-26838-defbf853"
},
{
"digest": {
"threshold": 0.9,
"line_hashes": [
"231103288816380712971694550230094835175",
"210913077028195380734499569520192767102",
"99905242948311252575261655362026851306",
"265959493536415377041203733119431842569"
]
},
"signature_type": "Line",
"target": {
"file": "drivers/infiniband/hw/irdma/hw.c"
},
"deprecated": false,
"signature_version": "v1",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c6f1ca235f68b22b3e691b2ea87ac285e5946848",
"id": "CVE-2024-26838-ed2257a4"
}
]